La lenteur vient sans doute du fait que le programme attend la réponse de machines qui ne sont pas en ligne, donc je dirais :
1) Mettre un timeout plus court -w 2500
2) Faire les ping en parallèle :
$ips = array('169.254.23.1','169.254.23.2','169.254.23.3','10.8.0.4');
$processus = array();
foreach($ips as $ip) // démarre les pings
{
$processus[] = popen("ping $ip -n 1 -w 2500","r");
}
foreach($processus as $proc) // lit tous les résultats
{
$resultat = fread($proc, 8000);
echo $resultat;
pclose($proc);
}
Ça suppose que ton server est sous Windows, les paramètres sous Linux prennent d'autres noms.
Et il faudra parser le résultat puisque la commande renvoie du texte humainement lisible, disons que si tu peux trouver "perte 0%" ou "0% loss" dans le message c'est que ça doit être bon ![[[sticker:p/1jnh]]](https://image.jeuxvideo.com/stickers/p/st/1jnh)
Et au fait, c'est du PHP, pas du java ![[[sticker:p/1jnh]]](https://image.jeuxvideo.com/stickers/p/st/1jnh)