Código PHP:
<?php
$unixtime = time();
$tiempoespera = 60;
$url = "aquiva.midns.com";
$plogin = 1111;
$pchar = 2222;
$pmap = 3333;
$pmysql = 3306;
$tiempotxt = fopen( "tiempo.txt", "r");
$tiempotxtv = fread($tiempotxt, 10);
fclose($tiempotxt);
if($unixtime-$tiempotxtv < $tiempoespera){
$estadotxt = fopen( "estado.txt", "r");
$estadotxtv = fread($estadotxt, 12);
fclose($estadotxt);
echo 'img src="images/'.$estadotxtv.'.png" alt="" /';
}
else {
$estadoserver = "";
$acc = @fsockopen($url, $plogin, $errno, $errstr, 1);
$char = @fsockopen($url, $plchar, $errno, $errstr, 1);
$map = @fsockopen($url, $pmap, $errno, $errstr, 1);
$mysql = @fsockopen($url, $pmysql, $errno, $errstr, 1);
echo '<img src="images/';
if(!$acc){
echo 'off';
$estadoserver .="off";
return false;
}else{
fclose($acc);
echo 'on';
$estadoserver .="on";
return true;
}
if(!$char){
echo 'off';
$estadoserver .="off";
return false;
}else{
fclose($char);
echo 'on';
$estadoserver .="on";
return true;
}
if(!$map){
echo 'off';
$estadoserver .="off";
return false;
}else{
fclose($map);
echo 'on';
$estadoserver .="on";
return true;
}
if(!$mysql){
echo 'off';
$estadoserver .="off";
return false;
}else{
fclose($mysql);
echo 'on';
$estadoserver .="on";
return true;
}
echo '.png" alt="" />';
$tiempotxt = fopen( "tiempo.txt", "w");
fputs($tiempotxt, $unixtime);
fclose($tiempotxt);
$estadotxt = fopen( "estado.txt", "w");
fputs($estadotxt, $estadoserver);
fclose($estadotxt);
}
?>
Para evitar que todo el mundo haga fsockopen, unicamente se hace 1 vez cada minuto, y en general, es decir, a través de una resta con unixtime, se lee y se escribe en el archivo tiempo.txt y asi se comprueba que han pasado mas de 60 segundos desde el ultimo update.
si no han pasado mas de 60 segundos, se lee carga el estado desde el archivo estado.txt (por ejemplo el contenido podria ser offoffoffoff, y entonces se muestra la imagen offoffoffoff.png.
Si de lo contrario, han pasado mas de 60 segundos, se actualiza el valor del archivo tiempo.txt y después se procede ha hacer fsockopen a los 4 puertos y se va construyendo el estado, luego se muestra la imagen y se guarda en estado.txt
pues esto no funciona, pero no muestra ningún error, etc.
a ver si alguien detecta algún error o algo, Gracias.