Ping en continu en PHP
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
-
Contributeur Ambassadeurbonjour, ton code fonctionne bien?
-
-
Contributeur Ambassadeur@mrtbgauAs-tu envisagé de faire une boucle dans ton code?
-
@yg_beOui 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;
}
} -
Contributeur Ambassadeur@mrtbgauTu n'as pas expliqué ce que tu souhaitais obtenir précisément.
-
@yg_beJe veux pinger une adresse indéfiniment et actualiser le statut et la latence en fonction des réponse.
Ce statut et cette latence s'insert dans une base de données et je récupére ces données pour l'afficher dans un tableau de résultat
-
-
ModérateurBonjour,
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...