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...
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.
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 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 ?
Partager