Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/08/2011, 23h09   #1
Candidat au titre de Membre du Club
 
Homme
Technicien Supérieur en Support Informatique
Inscription : juin 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien Supérieur en Support Informatique

Informations forums :
Inscription : juin 2011
Messages : 27
Points : 14
Points : 14
Par défaut Faire un ping en PHP

Bonsoir à tous je cherche depuis un bon moment un moyen de testé l'état d'un serveur distant, un simple ping suffirai... mais la complexité c'est de le faire en php...

J'ai réussi à obtenir une parti de code mais le problème c'est que ca me dit toujours OK, même si le serveur n'existe pas -_-...

Pourriez vous m'aider à améliorer mon problème ou même me donné une autre solution si je suis dans la mauvaise direction ? ^^

Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?php
echo ("Etat des serveurs <br>");
 
$serveur1="195.27.0.130";
$serveur2="www.adressebidon.com";
 
$ping=exec ('/bin/ping -c2 -q -w2 '.$serveur1.' | grep transmitted | cut -f3 -d"," | cut -f1 -d"," | cut -f1 -d"%"');
if ($ping==0)
echo ("Serveur $serveur1 OK :)<br><br>");
else
echo ("Serveur $serveur1 HS :(<br><br>");
 
$ping=exec ('/bin/ping -c2 -q -w2 '.$serveur2.' | grep transmitted | cut -f3 -d"," | cut -f1 -d"," | cut -f1 -d"%"');
if ($ping==0)
echo ("Serveur $serveur2 OK :)<br><br>");
else
echo ("Serveur $serveur2 HS :(<br><br>");
 
?>
Je vous remercie d'avance, Cordialement

Ps: j'avais aussi essayer des codes que j'ai trouver mais ça ne fonctionne pas comme je le désire :

Code :
1
2
3
4
5
6
7
8
9
10
 
<?php
$fp = fsockopen("195.27.0.130", 80, &$errno, &$errstr, 30);
if(!$fp)
{
 print"HS";
} else {
 print"OK";
}
?>
ou encore :
Code :
1
2
3
4
5
6
7
8
9
 
<?php
$ping = "ping -a -n 1";
$ip = "195.27.0.130";
$result = "";
 
system ($ping $ip > $result);
 
?>
Hyuunkel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 10h06   #2
Candidat au titre de Membre du Club
 
Inscription : juin 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 10
Points : 12
Points : 12
Quelle distribution de Linux utilises-tu ?

Sous Debian, je me suis servi de la commande Ping pour évaluer la latence et la vitesse d'une connexion.
Comme toi, avec un simple exec('ping', $output).
En comparant nos 2 codes, la différence est dans le test de la fonction, je me suis servi de count($output)>2 à la place de if ($ping==0);

p'etre que ça peut t'aider, la class de ping et de parse du resultat est ici ->
http://www.fobec.com/CMS/web/php/exe...aine_1084.html
Fobec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 17h31   #3
Candidat au titre de Membre du Club
 
Homme
Technicien Supérieur en Support Informatique
Inscription : juin 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien Supérieur en Support Informatique

Informations forums :
Inscription : juin 2011
Messages : 27
Points : 14
Points : 14
Merci de ta réponse mais malheuresement j'y suis depuis ce matin mais je n'y arrive pas , que ça soit avec ton lien ou ta méthode : nada

Mon dernier test est :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
echo ("Etat des serveurs <br>");
echo ("<br>");
 
$ping='ping';
$serveur1="www.adressebidon.com";
$serveur2="195.27.0.130";
 
exec ($ping.$serveur1, $etat1);
 
if (count($etat1)>2)
echo ("Serveur $serveur1 OK :)<br><br>");
else
echo ("Serveur $serveur1 HS :(<br><br>");
 
exec ($ping.$serveur2, $etat2);
 
if (count($etat2)>2)
echo ("Serveur $serveur2 OK :)<br><br>");
else
echo ("Serveur $serveur2 HS :(<br><br>");
 
?>
En fait le but de tout ça c'est simplement d'avoir l'état d'un serveur sur une page hébergé sur un ftp (free en l'occurrence)... c'est tout... (je sais que ca se fait je connais un site qui le fait...)

C'est pour cela que j'avais pensé au ping mais si quelqu'un à une autre solution je suis preneur...
Hyuunkel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 10h09   #4
Candidat au titre de Membre du Club
 
Inscription : juin 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 10
Points : 12
Points : 12
peux-tu m'en dire plus, as-tu accès à la fonction ping ou la réponse est mauvaise ?

Pour tester l'état d'un serveur, on peut le faire avec la fonction fopen.
Code :
1
2
3
4
5
6
7
8
<?php
$handle = @fopen("http://www.fobec.com/", "r");
if ($handle) {
    echo 'ok';
} else {
    echo 'down';
}
?>
Fobec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 14h01   #5
Candidat au titre de Membre du Club
 
Homme
Technicien Supérieur en Support Informatique
Inscription : juin 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien Supérieur en Support Informatique

Informations forums :
Inscription : juin 2011
Messages : 27
Points : 14
Points : 14
Merci Fobec, je ne l'avais précisé mais j'avais déjà tester cette fonction également.
Sur mon ftp, le fopen fonctionne si je veux ouvrir/édite/MAJ un fichier héberger dessus, mais par contre ca ne fonctionne pas si je met un URL.

Exemple :
Code :
1
2
3
4
5
6
7
8
9
<?php
$fichier = "Ligne.txt";
$Ligne = "blabla";
 
$update = fopen($fichier,'a+');
fputs ($update,$Ligne."\n");
fclose($update);
 
?>
Lorsque je met un URL, ca n'exécute pas la page php, et fait comme si je voulais enregistrer un fichier, "enregistrer xxx.php"...

Et Lorsque je met un ip, à la place de l'URL ca me met :
Warning: fopen(195.27.0.130) [function.fopen]: failed to open stream: No such file or directory in /mnt/140/sdc/d/1/

Donc j'en conclu que le ftp free que j'utilise n'a pas cette fonction de php activé et comme je n'es pas accès à la config (logique), j'avais abandonné cette idée. C'est pourquoi j'essayais de me diriger vers un ping...
Hyuunkel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 19h30   #6
Candidat au titre de Membre du Club
 
Inscription : juin 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 10
Points : 12
Points : 12
une seule solution semble fonctionner: fsockopen et test avec triple =
Est-ce que ça marche aussi chez toi ?

Code :
1
2
3
4
5
6
7
8
9
 
<?php
$socket = @fsockopen("www.google.com", 80);
if ($socket === false) {
    echo "failed";
} else {
    echo 'ok';
} 
?>
Fobec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 16h24   #7
Candidat au titre de Membre du Club
 
Homme
Technicien Supérieur en Support Informatique
Inscription : juin 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien Supérieur en Support Informatique

Informations forums :
Inscription : juin 2011
Messages : 27
Points : 14
Points : 14
Non j'ai déjà test aussi et le fsockopen ne fonctionne que si on met un URL, mais quand je met un ip, ça me dit "ok" même si le serveur n'est pas pingable...

De plus les serveurs en questions n'ont pas forcément de serveur web, donc il faut que je puisse les testé sur un autre port... mais autre problème du fsockopen: quand je met un autre port ca me renvoi toujours "failed"...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$serveur1 = @fsockopen("195.27.0.130", 80);
if ($serveur1 === false) {
    echo "failed";
} else {
    echo 'ok';
fclose($serveur1);
}
?>
 
<?php
$serveur2 = @fsockopen("tcp://195.59.138.19", 3516);
if ($serveur2 === false) {
    echo "failed";
} else {
    echo 'ok';
fclose($serveur2);
} 
?>
Sinon ça n'intéresse personne d'autre que Fobec, de tester l'état d'un serveur distant ?...
Hyuunkel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 18h33   #8
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 808
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 808
Points : 1 523
Points : 1 523
De mémoire sur free seul le port 80 est ouvert, donc tu ne pourras pas tester d'autres ports.

As-tu regardé dans le phpinfo si les sockets sont activés ?
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 01h22   #9
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Il faudrait voir aussi si Free à l'extension PHP cURL activée pour vérifier l'existence d'une URL.
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 14h05   #10
Candidat au titre de Membre du Club
 
Homme
Technicien Supérieur en Support Informatique
Inscription : juin 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien Supérieur en Support Informatique

Informations forums :
Inscription : juin 2011
Messages : 27
Points : 14
Points : 14
Il semblerai visiblement qu'il n'y est pas de solution à ce que je souhaite faire, du coup je n'es d'autre choix que de laisser tomber.

Le sujet peut être clos, merci à tous ceux qui ont participé.

Cordialement
Hyuunkel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h40   #11
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Je viens de voir que cURL est bien présent chez Free...

Code :
1
2
3
<?php
if(extension_loaded('curl'))echo 'Extension cURL charg&eacute;e !';
?>
Nous obtenons bien... Extension cURL chargée !
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h30.


 
 
 
 
Partenaires

Hébergement Web