Vérification de la présence d'un serveur

Contenu du snippet

Des fois, on a besoin d'indiquer aux visiteurs de notre site si le chat IRC est ouvert, si un serveur Counter est démarré.

Coté administration, ca peut servir a supprimer les liens vers des sites n'existant plus ou ayant changé d'adresse

La source a été modifiée pour permettre une vérification sur plusieurs ports d'un meme server

Source / Exemple :


<table border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#000000">
    <tr>
    <td align="center" colspan="4" bgcolor="#FFFFFF">
        <font face="Arial, Helvetica, sans-serif"><b>Test de socket</b></font>
    </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#FFFFFF">
        <b>Serveur.</b>
    </td>
    <td align="center" bgcolor="#FFFFFF">
        <b>Port.</b>
    </td>
    <td align="center" bgcolor="#FFFFFF">
        <b>Statut.</b>
    </td>
    <td align="center" bgcolor="#FFFFFF">
        <b>Ping.</b>
    </td>
    </tr>
<?php
//
// Tentative de connexion sur un server par plusieurs ports
//
$server[0]['active'] = TRUE;    // Autoriser ou non la connexion
$server[0]['port'][0] = 21;     // Port 21 : FTP
$server[0]['port'][1] = 25;     // Port 25 : SMTP
$server[0]['port'][2] = 80;     // Port 80 : HTTP
$server[0]['port'][3] = 4662;   // Port 4662 : eMule TCP
$server[0]['port'][4] = 4672;   // Port 4672 : eMule UDP
$server[0]['port'][5] = 6667;   // Port 6667 : IRC(peut etre différent)
$server[0]['port'][6] = 8080;   // Port 8080 : HTTP secondaire
$server[0]['addr'] = 'www.phpcs.com'; // adresse du server

//
// Tentative de connexion sur un server par un port unique
//
$server[1]['active'] = TRUE;    // Autoriser ou non la connexion
$server[1]['port'] = 21;        // Port 21 : FTP
$server[1]['addr'] = 'www.phpcs.com';     // adresse du server

function getmicrotime()
{ 
   list ($usec, $sec) = explode(' ', microtime() ); 
   return ( (float) $usec + (float) $sec); 
} 
for ($i = 0; $i <= count($server); $i++)
{
    if ($server[$i]['active'] == TRUE)
    {
        if (is_array($server[$i]['port']))
        {
            $port = array();
            $port = $server[$i]['port'];
        }
        else
        {
            $port = array();
            $port[0] = $server[$i]['port'];
        }
        for ($j = 0; $j < count($port); $j++)
        {
            echo '<tr><td align="center" bgcolor="#FFFFFF" height="20">'."\n";
            if ($j == 0)
            {
                echo $server[$i]['addr']."\n";
            }
            else
            {
                echo '&nbsp;'."\n";
            }
    
            echo '</td><td align="center" bgcolor="#FFFFFF">'."\n";
            echo $port[$j]."\n";
            echo '</td><td align="center" bgcolor="#FFFFFF">'."\n";
            
			$time_start = getmicrotime();

			if ( @fsockopen( $server[$i]['addr'], $port[$j], &$errno, &$errstr, 5) )
			{
				echo '<font color="#00CC00"><b>Online</b></font>'."\n";
				$time_end = getmicrotime();
				$ping = round(($time_end - $time_start) * 1000);
			}
			else
			{
				echo '<font color="#CC0000"><b>Offline</b></font>'."\n";
				$ping = '>5000';
			}
			

			echo '</td><td align="center" bgcolor="#FFFFFF">'."\n";
			echo $ping;
			echo '</td></tr>'."\n";
        }

    }
}
?>

</table>

Conclusion :


Paramétrage du script :

$server[0]['active'] (true ou false) indique si l'on veut ou non vérifier la connexion
$server[0]['port'] ou $server[0]['port'][X] (X : numéro de 1 à 65535) port sur lequel on va tester la connexion
$server[0]['addr'] Adresse du sever (IP ou DNS)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.