
Dans ce tutoriel, vous verrez comment il est possible de vérifier l'état d'un serveur grâce à PHP. L'utilisation de la commande PING nous seras dans le cas ci-dessous très utile afin d'obtenir le résultat voulu.
Étape 1
PHP n'a aucune fonction de PING intégré. Nous allons donc devoir en réalisé une! Nous voulons donc obtenir 2 informations essentiel :
- La disponibilité du domaine
- La vitesse de réaction
Le concepte est simple. Nous allons essayé de nous connecté au server grâce à un socket sur le port 80 et ainsi mesuré quel a été le délai de connection afin d'obtenir la rapidité du serveur. Afin de créer un socket, PHP offre une panopli de fonction. Dans le cas présent, nous allons utilisé la fonction fsockopen(). Selon la réponse renvoyé par la fonction, nous serons en mesure d'établir si le serveur est opérationnel ou non.
Étape 2Tout d'abord nous allons créer une fonction prenant en paramètre le domain afin de s'y connecter. La fonction va retourner le délai de connection si la connection est un succès sinon celle-ci retournera -1. Dans le cas présent, la fonction ne présente aucune validation lors de la saisie du domaine.
Voici les étapes principales :
- Enregistrer l'heure de départ
- Essayer de ce connecter au domaine
- Enregistrer l'heure de fermeture
- Vérifier la valeur de retour
- Si une erreur est retourné : -1
- Si la connection a été établi : Heure de fin - heure de départ (milliseconde)
CODE :
<?php
function pingDomain($domain){
$starttime = microtime(true);
$file = fsockopen ($domain, 80, $errno, $errstr, 10);
$stoptime = microtime(true);
$status = 0;
if (!$file) $status = -1; // SITE NON DISPONIBLE
else {
fclose($file);
$status = ($stoptime - $starttime) * 1000;
$status = floor($status);
}
return $status;
}
?>
Voici maintenant un exemple d'utilisation du script ci-dessus.
EXEMPLE :
<?php
// FONCTION DE VÉRIFICATION DE DISPONIBILITÉ
function pingDomain($domain){
$starttime = microtime(true);
$file = fsockopen ($domain, 80, $errno, $errstr, 10);
$stoptime = microtime(true);
$status = 0;
if (!$file) $status = -1; // SITE NON DISPONIBLE
else {
fclose($file);
$status = ($stoptime - $starttime) * 1000;
$status = floor($status);
}
return $status;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="domain">
Domain name:
<table>
<tr><td><input name="domainname" type="text" ></td></tr>
<tr><td><input type="submit" name="Tester" value="PING"></td></tr>
</table>
</form>
<?php
// Vérifier les données envoyés
if (isset($_POST['Tester'])){
$domainbase = (isset($_POST['domainname'])) ? $_POST['domainname'] : '';
$domainbase = str_replace("http://","",strtolower($domainbase));
echo '<table>';
$status = pingDomain($domainbase);
if ($status != -1) echo "<tr><td>http://$domainbase est disponible ($status ms)</td><tr>";
else echo "<tr><td>http://$domainbase est disponible</td><tr>";
echo '</table>';
}
?>
</body>
Marquer favoris
Bookmark
Email This
Hits: 818
Commentaires (0)

Ecrivez un commentaire





















