Pour ereg , tu peux simplement utiliser strpos qui sera nettement plus rapide :
1 2 3 4
| if(strpos($ping, 'perte 100%') === false)
echo 'deconnecte'
else
echo 'connecte' |
Tu peux limiter le timeout du ping avec l'option -w
Par exemple :
ping -w 100 -n 1 192.168.1.1
Attendra au maximum 100ms une réponse au dela il considère que c'est un echec.
Donc dans ton cas , si tous les serveurs sont déconnecté ca prendra environ 14 sec de les pinger.
Pour accélérer le processus il n'ya pas de secret il faut en lancer plusieurs en parallèle.
Pour ça plusieurs solutions :
- Via javascript tu lances plusieurs requêtes asynchrones . Chacune s'occupant d'une partie des adresses. Tu attends les réponses de tout le monde et tu aggrèges les résultats dans un tableau.
Donc si avec une requête tu met 10 sec , en faisant 5 requêtes en parallèles , tu vas en théorie mettre plus que 2 sec
- Tu te fais un script coté serveur dans un langage multi thread (c,cpp,java, ...) qui fait les ping pour toi sur X thread et renvoi un seul résultat avec toutes les réponses.
Perso j'opterais plus pour la seconde solution qui sera plus performante et plus "propre".
Partager