Faire un ping en php
chico95
-
Zep3k!GnO Messages postés 2049 Statut Membre -
Zep3k!GnO Messages postés 2049 Statut Membre -
Salut a tous,
J'ai besoin de voir si un serveur est UP ou DOWN, pour cela, je dois faire un ping de ma machine a distance.
Le problème c'est que que j'essaye de me ping moi-même ou de ping un site internet qui marche, tout fonctionne parfaitement, mais quand je ping une autr emachine connecté au reseau, sa bug !
Voila le message :
Et puis voila mon code, il est tout simple !
Le premier étant mon adresse IP, le ping renvoi la bonne image.
Le deuxieme étant une autre machine, le ping renvoi l'erreur !
Merci
EDIT : Je viens de penser a un truc, est-ce l'erreur de ping pourrait venir du fait que je teste en local et non sur un serveur ?
J'ai besoin de voir si un serveur est UP ou DOWN, pour cela, je dois faire un ping de ma machine a distance.
Le problème c'est que que j'essaye de me ping moi-même ou de ping un site internet qui marche, tout fonctionne parfaitement, mais quand je ping une autr emachine connecté au reseau, sa bug !
Voila le message :
Warning: fsockopen() [function.fsockopen]: unable to connect to 10.19.2.52:80 (Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu. )(10060)
Et puis voila mon code, il est tout simple !
$fp = fsockopen("10.19.2.51", 80, $errno, $errstr, 10);
if (!$fp)
{
echo "$errstr ($errno)<br />\n"; echo '<img src="down.png" alt="serveur down" />';
}
else
{
echo '<img src="up.png" alt="serveur up" />';
}
fclose($fp);
echo '<hr/>';
$fp = fsockopen("10.19.2.52", 80, $errno, $errstr, 10);
if (!$fp)
{
echo "$errstr ($errno)<br />\n"; echo '<img src="down.png" alt="serveur down" />';
}
else
{
echo '<img src="up.png" alt="serveur up" />';
}
fclose($fp);
Le premier étant mon adresse IP, le ping renvoi la bonne image.
Le deuxieme étant une autre machine, le ping renvoi l'erreur !
Merci
EDIT : Je viens de penser a un truc, est-ce l'erreur de ping pourrait venir du fait que je teste en local et non sur un serveur ?
5 réponses
-
Voici un p'tit script d'exemple qui devrait t'intéresser (j'te laisse l'adapter à tes besoins ;) ) :
<?php $sAdresse[] = "www.google.fr"; $sAdresse[] = "www.google_wrong_ndd.fr"; foreach($sAdresse as $sAdresse){ $aResult = Array(); exec("ping ".$sAdresse, $aResult); echo "<pre>".print_r($aResult, true)."</pre>"; } ?> -
merci pour la réponse, Si je comprends bien, sa envoi la commande "ping (adresse ip)" et sa stock les données dans un tableau ?
Mais comment voir si on a une réponse pour ensuite afficher une image?
En comparant le nombre de paquets envoyés et de paquets reçues ? En utilisant le nombre de paquets perdus ?
Merci -
bonjour,
juste une esquisse d'idée
tu fais ton test en local avec quels types de machine ?
pc ? serveur ?
car selon le type de machine le port 80 n'est pas forcement et ouvert et ton ping plante...
Adns -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
https://www.php.net/manual/fr/function.exec.php : <i>Exécute un programme externe</i>
Après comme j'ai fait exprès dans l'exemple, tu vois bien que le nombre de résultat est différents et que le message retourné aussi, y a plus qu'à s'axer sur ça pour faire ce que tu veux comme afficher une image, du texte etc...