Ping en continu en PHP

mrtbgau -  
jordane45 Messages postés 38486 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:


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
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, ton code fonctionne bien?
0
mrtbgau
 
Oui, très bien. Mais ce que je veux c'est pinger une adresse tout le temps et avoir le statut et le temps de réponse en temps réel
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > mrtbgau
 
As-tu envisagé de faire une boucle dans ton code?
0
mrtbgau > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
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;
}
}

.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > mrtbgau
 
Tu n'as pas expliqué ce que tu souhaitais obtenir précisément.
0
mrtbgau > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Je 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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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...

0