Quienes gestionen varias páginas en diferentes servidores, pueden necesitar hacer un pequeño test a los servidores cada poco tiempo para comprobar que están funcionando correctamente, o almenos que están funcionando, una opción es visitar las páginas, evidentemente, pero cuando el número de servidores crece no es en absoluto práctico, de manera que muchas veces resulta casi obligado buscar alternativas, o en este caso fabricarla uno mismo.
Objetivo: Script para detectar si un servidor está caído, o no.
Bien, el script consta de 3 partes, y 2 son básicas, que son la parte HTML y la parte PHP, la parte CSS podemos obviarla, pero siempre viene bien un poco de coloreado para tener una mejor visión.
Aquí se me hace bastante dificil separar los 3 códigos, por que van bastante «fusionados», de manera que pondré por un lado la función que se encargará de averiguar el estado, la lista de servidores y por último el modo de repasar cada servidor.
Parte 1/3: Función
function test($url,$tiempo){
$check = @fsockopen($url, 80, $errno, $errstr, $tiempo);
if($check){
echo "<li>Online: $url</li>";
}else{
echo "<li>Offline: $url</li>";
}
}
Es bastante simple ¿no? por un lado recibe $url
, que será el dominio o dirección IP – por ejemplo: emm-gfx.net o 255.255.255.255 – y por otro recibe la variable $tiempo
, que será el tiempo de espera hasta «darse por vencido» y pasar al siguiente servidor, si este tiempo es superado, se dará por supuesto que el servidor está offline.
Ahora estaría bien tener una lista de servidores a revisar, en un array por ejemplo, yo lo he hecho de esta manera:
Parte 2/3: Lista de servidores
$servidores = array(
0=>'emm-gfx.net',
1=>'emmsoftware.net',
2=>'blacksphere.es',
3=>'google.com',
4=>'dominioabsurdo.lol',
5=>'92.43.17.6',
6=>'255.255.255.255'
);
Parte 3/3: Ejecutar la función en cada uno de los servidores
$total = count($servidores);
$inicio = 0;
while($inicio < $total){
echo test($servidores[$inicio],$tiempo);
$inicio++;
}