Hola, aqui te mando un ejemplo funcionando ...
[PHP]
$conexion =
@fsockopen("www.google.com", 80, $errno, $errstr, 30);
if (!$conexion) {
echo "Offline";
} else {
echo "Online";
fclose($conexion);
}
?>
[/PHP]
Te explico un poco, es muy sencillo creamos un socket hacia el puerto 80 del servidor que nosotros queramos ... la @ delande del fsockopen es para que no nos devuelva nada la apertura de socket, ya que si no esta online el host daría errores y no nos interesa ...
Y nada simplemete si no existe $conexion pues está offline y si existe está online, es sencillo ...
Recuerda que esto no te sirve para saber si funciona
http://www.loquesea.com/algo/ si no que solo te sirve para los hosts ...
Si lo quieres en forma de función ... es modificarlo un poco ... te lo pongo tambien para que te salgan imágenes ... aunque también podrías hacerlo como lo pusiste tu ...
[PHP]
function EstaEnLinea($host){
$conexion =
@fsockopen($host, 80, $errno, $errstr, 30);
if (!$conexion) {
echo "

";
} else {
echo "

";
fclose($conexion);
}
}
// para llamar a la funcion ...
EstaEnLinea("www.elotrolado.net");
EstaEnLinea("www.elotrolado2.net");
?>
[/PHP]
Te recomiendo que el codigo a parte lo metas por ejemplo en un pequeño iframe ya que mientras comprueba si todos los hosts que metas estan online tardará un tiempo y relentizará la carga de la página, con iframes consigues que se cargue la pagina ... y luego vaya saliendo si están online o no a medida que lo va calculando ...
También puedes bajar el timeout fsockopen (30) por algo menor ... aunque si el host no existe te va responder mucho antes de los 30 segundos ...
Espero que con esto te sirva,
Saludos
PD: joder que mal se ve el codigo php con esa combinación de colores