Ping en continu en PHP
mrtbgau
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je suis un projet d'outil de multiping et je souhaite pinger une adresse ip en continu pour avoir son statut(connecté ou non) et le temps de réponse.
Pour l'instant, j'ai ça:
Configuration: Windows / Edge 102.0.1245.41
Je suis un projet d'outil de multiping et je souhaite pinger une adresse ip en continu pour avoir son statut(connecté ou non) et le temps de réponse.
Pour l'instant, j'ai ça:
function getLatence($ip){
$ping = exec("ping -n 1 $ip", $output, $status);
return ($status == 0) ? $ping : "Pas de réponse de ".$ip;
function getStatus($ip){
$ping = exec("ping -n 1 $ip", $output, $status);
return ($status == 0) ? "Connecté" : "Non connecté";
if(isset($_POST['btn-analyser'])){ //Si l'utilisateur clique sur le bouton analyser
try{
if(isset($_POST['saisieIP'])){ //Si une ip est entrée
$ip = $_POST['saisieIP'];
$statut = getStatus($ip);
$latence = getLatence($ip);
$insert = ("INSERT INTO `enregistrement`(`adrEnregistrement`, `staEnregistrement`, `tpsEnregistrement`)
VALUES (:ip, :statut, :latence)");
$sqlInsert = BDDConnexionPDO()->prepare($insert);
$sqlInsert->bindParam(':ip', $ip);
$sqlInsert->bindParam(':statut', $statut);
$sqlInsert->bindParam(':latence', $latence);
$sqlInsert->execute();
}
}
catch(PDOException $e){
echo 'Erreur: ' .$e->getMessage();
}
}
Configuration: Windows / Edge 102.0.1245.41
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, ton code fonctionne bien?-
-
-
Oui mais la page s'actualise indéfiniment
Voici ce que j'ai essayé:
.
function getStatus($ip){
while(true){
$ping = exec("ping -n 1 $ip", $output, $status);
$statut = ($status == 0) ? "Connecté" : "Non connecté";
echo $statut;
}
}
function getLatence($ip){
while(true){
$ping = exec("ping -n 1 $ip", $output, $status);
$latence = ($status == 0) ? $ping : "Pas de réponse de ".$ip;
echo $latence;
}
} -
-
-
-
Bonjour,
1 - ta boucle ne doit pas se trouver dans ta fonction de ping .. mais dans ton programme principale
2 - Les pages php ont un temps d'exécution "max" et tu risques donc de tomber en timout ..
3- Pour faire ce que tu souhaites, un script JS (faisant appel en AJAX à ton script php) serait préférable.
Ainsi, tu pourras demander ( via code js..) à ta page, de relancer la vérification toutes les X secondes.
4 - Certains serveurs n'apprécient pas d'être pinguer en continue .. pensant être victime d'une attaque.. L'ip de ton serveur php risque donc d'être black listée...