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

AJAX Discussion :

[AJAX] Ping en tache de fond


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Par défaut [AJAX] Ping en tache de fond
    Bonjour à tous !

    Je cherche à réaliser un ping d'une machine en PHP/Ajax afin que celui ci se fasse de manière complètement autonome et transparent pour l'utilisateur.

    Sur une première page s'affiche les machines selectionnées.
    En cliquant sur une machine, une fenetre s'ouvre tel un pop-up avec les détails de cette dernière.
    En haut à droite de ce pop-up le nom de la machine est indiqué, et j'aimerais que ce nom (affiché en gris à la base) passe au vert si ping OK ou rouge si NOK.

    Auriez vous la gentillesse de m'aiguiller dans mes recherches car je n'ai aucune notion de Javascript ?

    Merci par avance
    ++

  2. #2
    Membre éprouvé
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Par défaut
    Bonjour,

    Et ce que tu es sur un serveur dont tu controles la configuration ?
    Sous linux, windows ou autre ?

    Pour répondre a ton problème tu dispose de plusieurs solutions.

    Le ping :
    1. Avec php et la fonction system("cmd") qui fonctionnera normalement sans trop de problème a condition d'avoir les droits sur cette fonction
    system("ping ".$IP);

    sinon tu peux aussi avoir recours au cgi a conditions que ceux ci soient activés sur ton serveur.
    dans ce cas, tu ecrira un cgi spécifique a ton os.
    et tu passera a ce cgi les paramètres a tester.

    Par exemple sous linux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #!/bin/sh
    # Lectures des parametres envoyées en POST
    read POSTPARAM
    echo -e "Content-type: text/html\n"
    IPTERM=`echo $POSTPARAM | awk  -F "=" '{print $2}'` 
    echo -e "`ping $IPTERM -c 3`"
    Ce script te retourne le résultat du ping pour l'ip envoyée en sous la forme IP=192.168.1.1



    Maintenant que tu as ton ping il te faut le récupérer sur ta page.

    Pour ce fait tu vas devoir utiliser l'object js XMLHttpRequest
    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
     
    var xhr_object = null;
    var result;
     
    if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
     else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
      else
      {
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
      }
      xhr_object.open("POST", "url de ton cgi ou script php a appeler", false);
      xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xhr_object.send("IP=192.168.1.1");
    if(xhr_object.readyState == 4){
        if(xhr_object.responseText)
        {
          response = xhr_object.responseText; 
          //et dans response tu as le contenu de ton ping 
        }
    }
    Bien entendu pour que cela se fasse de manière ponctuelle tu sauras touver les bonne fonction de timout de javascript ainsi que le bon moment pour l'activer... :p

    Même si la réponse que je t'ai donnée n'est pas forcement 100% complète, elle devrait te permettre avec l'aide de l'ami google de trouver tout ce qu'il te faudra pour la suite des évènements.

    Cordialement.

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Par défaut
    Hello,

    Merci pour ton aide sur l'approche qui m'a beaucoup aidé et du fait m'a permis de trouver la solution que voici :


    Le code de ma page où est affiché le résultat du ping
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <script type="text/javascript">
    function exemple()
    {
    	var xhr_object = null;
    	var result;
    	var obj;
    	//ici je recupère le nom de la machine que je vais pinger
            var ComputerName = '<?php echo $_GET['id']; ?>' ; 
     
    	obj = document.getElementById("resultat");
    	if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
    	 else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    	  else
    	  {
            //alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    	  return(false);
    	  }
     
    	xhr_object.open("POST", "test.php", false);
    	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	xhr_object.send("IP=" + ComputerName);
     
    	if(xhr_object.readyState == 4){
    		if(xhr_object.responseText)
    		{
    			response = xhr_object.responseText; 
    		}
    	}
    	obj.innerHTML += response;
    }
    </script>
     
    <div id="resultat"></div>
    Et la page test.php qui est appelée par le JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $test = $_POST['IP'];
     
    //je ne voulais pas qu'il y ait l'affichage du ping
    ob_start();
    system("ping -n 1 ".$test, $result);
    ob_end_clean();
     
    //si $result=0 alors le ping est OK, si $result=1 alors ping NOK
    echo $result;
    ?>
    Si $result=0 alors je change la couleur de mon <div> en vert
    Si $result=1 alors je change la couleur de mon <div> en rouge

    So easyyyy LOL

    Merci encore pour ton aide
    A++

  4. #4
    Membre éprouvé
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Par défaut
    C'est cool.

    Comme le disent nos amis anglosaxons.

    Vous etes la bienvenue. ^^

  5. #5
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Bonne solution !

    Reste plus qu'a résoudre le post

Discussions similaires

  1. [AJAX] Tache de fond type cron
    Par M1000 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/11/2007, 18h46
  2. Réponses: 3
    Dernier message: 07/06/2005, 14h44
  3. [application tache de fond] lancer une application
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 5
    Dernier message: 25/03/2005, 11h13
  4. executer une page en tache de fond
    Par Invité(e) dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/01/2005, 16h23
  5. [Question] serveur en tache de fond
    Par Nicaisse dans le forum Réseau
    Réponses: 11
    Dernier message: 14/08/2003, 10h47

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