IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Faire un ping en PHP


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien Supérieur en Support Informatique
    Inscrit en
    Juin 2011
    Messages
    41
    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 : 41
    Points : 44
    Points
    44
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
     
    ?>

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 21
    Points : 27
    Points
    27
    Par défaut
    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

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien Supérieur en Support Informatique
    Inscrit en
    Juin 2011
    Messages
    41
    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 : 41
    Points : 44
    Points
    44
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 21
    Points : 27
    Points
    27
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $handle = @fopen("http://www.fobec.com/", "r");
    if ($handle) {
        echo 'ok';
    } else {
        echo 'down';
    }
    ?>

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien Supérieur en Support Informatique
    Inscrit en
    Juin 2011
    Messages
    41
    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 : 41
    Points : 44
    Points
    44
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 21
    Points : 27
    Points
    27
    Par défaut
    une seule solution semble fonctionner: fsockopen et test avec triple =
    Est-ce que ça marche aussi chez toi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $socket = @fsockopen("www.google.com", 80);
    if ($socket === false) {
        echo "failed";
    } else {
        echo 'ok';
    } 
    ?>

  7. #7
    Membre du Club
    Homme Profil pro
    Technicien Supérieur en Support Informatique
    Inscrit en
    Juin 2011
    Messages
    41
    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 : 41
    Points : 44
    Points
    44
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?...

  8. #8
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 387
    Points
    9 387
    Par défaut
    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 ?

  9. #9
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

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

  10. #10
    Membre du Club
    Homme Profil pro
    Technicien Supérieur en Support Informatique
    Inscrit en
    Juin 2011
    Messages
    41
    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 : 41
    Points : 44
    Points
    44
    Par défaut
    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

  11. #11
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Je viens de voir que cURL est bien présent chez Free...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    if(extension_loaded('curl'))echo 'Extension cURL charg&eacute;e !';
    ?>
    Nous obtenons bien... Extension cURL chargée !

Discussions similaires

  1. faire un ping en ssh2 via php
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/05/2011, 10h25
  2. Comment faire un Ping sous (x)html ou php
    Par Claude URBAN dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 18/12/2010, 18h10
  3. [Librairie] [TELNET] Faire du telnet en PHP sur un serveur distant
    Par kaboume dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 10/06/2010, 14h24
  4. question bête faire un ping en php
    Par micker dans le forum Langage
    Réponses: 6
    Dernier message: 05/11/2009, 15h48
  5. Faire cohabiter ASP et PHP sur une même DB
    Par freud dans le forum Général Conception Web
    Réponses: 12
    Dernier message: 12/10/2005, 17h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo