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 :

Actualisation rapide PHP/MySQL/Autre ?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 12
    Points
    12
    Par défaut Actualisation rapide PHP/MySQL/Autre ?
    Bonjour,

    Je fais actuellement un site qui affiche des informations sur des machines depuis une base MySQL (et tout marche bien).

    A présent, je voudrais rajouter, pour chaque machine, un voyant pour savoir si elle est allumée (=répond au ping par exemple)

    J'ai donc essayé de mettre une fonction qui ping chaque machine, mais vu qu'il y en a actuellement plus de 130, la page a mis 10min à charger...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function ping($ip) {
    	$output = shell_exec('ping '.$ip.' -c 2 -q | grep -i "received" | cut -d\',\' -f 2 | cut -d\' \' -f 2');
    	if ($output == 0) { 
    		echo 'down'; 
    	} else { 
    		echo 'up'; 
    	}
    }
    J'ai pas mal cherché sur le net, j'ai trouvé plusieurs solutions, mais vu que je m'y connait pas trop dans ces langages je viens demander conseil.

    J'ai vu des semblant de solution en AJAX, jQuery, socket(php), javascript, et d'autres plus exotiques...

    Un des problèmes que je rencontre, c'est que dans la situation actuelle, je suis obligé d’exécuter une fonction ligne après ligne, donc, par exemple, même si cette fonction de status/ping met 0.5sec à s’exécuter, pour 130 machines ça fait plus d'une minute d'attente.

    Je pense donc qu'il faudrait d'abord charger le site sans ça, puis que le status se rajoute progressivement. Ce serait bien de ne pas attendre du tout pour le chargement de la page, et maxi 3 sec pour l'ensemble des status.


    Concrètement,
    Ce que j'ai: Un tableau créé à partir d'une base MySQL
    Ce que je veux:
    - Rajouter une colonne à la fin, avec une indication (up/down)
    - Une actualisation périodique de ce status et PAS de la page entière
    - Actualisation ~toutes les secondes
    - Premier chargement immédiat pour les infos, < 3s pour les status

    Normalement, le serveur est assez costaud pour encaisser 130 pings simultanés

    Quelqu'un pourrait m'orienter ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Bon, j'ai pas mal cherché depuis mon premier post, il semblerait que la meilleure solution serait que le site fasse appel à un script (je ne sais pas quel langage serait le mieux, python ? ou un simple script linux ?) par php ou js.

    Ce script doit donc recevoir un tableau contenant les ip, et lancer tous les pings en même temps. Ensuite il faut stocker les résultats quelque part, et les récupérer. Il faut utiliser les threads d'après ce que j'ai pu lire...

    Je suis peu expérimenté en script non-web, du coup si quelqu'un peut m'orienter vers un langage ou même un début de solution, ce serait sympa


    PS: Je sais que je poste ça dans PHP et que ce n'est pas le sujet principal, mais vu que mon site est en PHP et que je ne sais pas encore quel langage je vais utiliser pour faire ce que je veux, je ne voyais pas d'autre solution. Désolé.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Bon, j'ai fini par faire moi-même quelque chose qui marche.

    Reste plus qu'à l’exécuter toutes les secondes

    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
    35
    36
    37
    38
    39
    40
    <?php	
     
    //------- Création liste IP dans ipList.txt
     
    	$file = fopen('ipList.txt', 'w');
    	while($data = mysql_fetch_assoc($req))
    	{	
    		fputs($file, $data['IPADDR']."\n");
    	}
    	fclose($file);
     
    //------- Verification dispo ipList & execution de fping + exportation dans ipUp.txt
     
    	while (!is_writable('ipList.txt')) { 
    		sleep(0.5);
    	}
    	`fping -a < ipList.txt > ipUp.txt`;
     
    //------- Verification dispo ipUp
     
    	while (!is_writable('ipUp.txt')) { 
    		sleep(0.5);
    	}
     
    //------- Lecture ipUp vers tableau
     
    $tableauIP = file('ipUp.txt');
     
    //------- Envoi de la requête
     
    $sqlReset = 'UPDATE hardware SET STATUSPING=\'DOWN\'';
    $reqReset = mysql_query($sqlReset) or die('Erreur SQL !<br>'.$sqlReset.'<br>'.mysql_error());
     
    foreach ($tableauIP as $ipOK)
    {
    	$sqlUP = 'UPDATE hardware SET STATUSPING=\'UP\' WHERE IPADDR=\''.$ipOK.'\'';
    	$reqUP = mysql_query($sqlUP) or die('Erreur SQL !<br>'.$sqlUP.'<br>'.mysql_error());
    }
     
    ?>
    Pour info, fping -a renvoie une liste de toutes les ip qui ont répondu au ping


    EDIT: j'avais un problème de chargement a cause des quotes, j'ai corrigé.

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. [MySQL] PHP + MySQL ou autre langage
    Par maf dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/06/2013, 07h15
  3. [Partenaire] Je cherche un développeur Joomla/PHP/MySQL/autre (sur Strasbourg).
    Par jaccqques dans le forum Autres
    Réponses: 0
    Dernier message: 01/04/2012, 23h55
  4. [MySQL] [PHP/MySQL] Auto-increment à l'actualisation
    Par Code85 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 19/07/2011, 11h21
  5. PHP-mysql -> vers appli GTK ou autre
    Par mao-40 dans le forum Linux
    Réponses: 2
    Dernier message: 06/12/2008, 14h11

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