Foros del Web » Programando para Internet » PHP »

Problema con fsockopen y socket_get_status

Estas en el tema de Problema con fsockopen y socket_get_status en el foro de PHP en Foros del Web. Bueno amigos estoy con una pequeña duda y gran problema, estoy creando una funcion para ver el estado de un servidor de juego y saber ...
  #1 (permalink)  
Antiguo 17/09/2009, 04:03
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 15 años, 11 meses
Puntos: 12
Problema con fsockopen y socket_get_status

Bueno amigos estoy con una pequeña duda y gran problema, estoy creando una funcion para ver el estado de un servidor de juego y saber si este esta online u offline.
Cuando el servidor esta online no hay problema y dice servidor online con un tiempo de respuesta execlente.
Pero si el servidor esta offinle a este le toma minutos en dar la respuesta y decir que el servidor esta offline.

--------
funcion
---------

Código PHP:
function Ping($ip,$puerto){
#nos conectamos al servidor de juego
$connect fsockopen("udp://".$ip$puerto$errno$errstr10);
$query "\xFF\xFF\xFF\xFF\x54Source Engine Query\x00";
fwrite($connect$query);
fread($connect4);
$status socket_get_status($connect);
$timeout time() +3;
    if(
$status["unread_bytes"] == or time() >= $timeout) {
    
//Fehlermeldung , wenn der Server nicht antwortet , oder rconpw,ip,port falsch in der config.inc.php angeben ist. 
    
$ping 'server offline';
    }else{
    
$ping 'server online';
    }
return 
$ping
Algunas veces lanza este error

Fatal error: Maximum execution time of 60 seconds exceeded in XXXXXXX donde XXXXXXX da a linea
Código PHP:
$status socket_get_status($connect); 
Pregunta:

¿Como podria hacerlo para que sea mas rapida la respuesta del offline, en que parte puedo agregar algo para determinar el tiempo de espera a la respuesta?

Gracias, espero su ayuda.
  #2 (permalink)  
Antiguo 17/09/2009, 04:43
Avatar de blekia  
Fecha de Ingreso: julio-2009
Mensajes: 204
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: Problema con fsockopen y socket_get_status

podrias utilizar:

stream_set_timeout ( resource stream, int seconds, int microseconds )

Código PHP:
$connect fsockopen("udp://".$ip$puerto$errno$errstr10);
stream_set_timeout $connect10); 
  #3 (permalink)  
Antiguo 19/09/2009, 14:10
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 15 años, 11 meses
Puntos: 12
tu dices cambiar

$status = socket_get_status($connect);

por

stream_set_timeout ( $connect, 10, 0 );

lo intente asi pero no hay caso tarda el mismo tiempo y salen los mismos errores.

Última edición por GatorV; 20/09/2009 a las 17:35
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:10.