Foros del Web » Programando para Internet » PHP »

Timeout en fsockopen

Estas en el tema de Timeout en fsockopen en el foro de PHP en Foros del Web. Hola EStoy usando esto para abrir una conexión: Código PHP: $fp [ "$url" ] =  fsockopen  (  $hostip ,  80 ,  $errno ,  $hostip ,  30  ...
  #1 (permalink)  
Antiguo 28/01/2007, 04:48
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Timeout en fsockopen

Hola
EStoy usando esto para abrir una conexión:
Código PHP:
$fp["$url"] = fsockopen $hostip80$errno$hostip30 ); 
y luego parsear los resultados que me llegan.

Cómo puedo aplicarle un 'timeout', es decir que si en X tiempo no responde haga
Código PHP:
fclose($fp["url"]); 
Por favor una ayudita, gracias
  #2 (permalink)  
Antiguo 28/01/2007, 12:04
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Timeout en fsockopen

Haber segun la expecificacion de la funcion timeout.
El ultimo argumento de la funcion es el timeout

resource fsockopen ( string target [, int port [, int &errno [, string &errstr [, float timeout]]]] )

Asi que hay deberias expecificar el tiempo maximo para la conexion, Ahora si lo que quieres es realizar un comando si esque no ubo conexion. Hay un ejemplo en php.net sobre esto.

Código PHP:
<?php
$fp 
fsockopen("url"80);
if (!
$fp) {
   echo 
"Unable to open\n";
} else {

   
fwrite($fp"GET / HTTP/1.0\r\n\r\n");
   
stream_set_timeout($fp2);
   
$res fread($fp2000);

   
$info stream_get_meta_data($fp);
   
fclose($fp);

   if (
$info['timed_out']) {
       echo 
'Connection timed out!';
   } else {
       echo 
$res;
   }

}
?>
Entonces si no se conecto se ejecuta la sentencia del f ($info['timed_out']) e imprime un msg.

Saludos

Última edición por DeeR; 28/01/2007 a las 12:06 Razón: olvido
  #3 (permalink)  
Antiguo 28/01/2007, 13:59
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Re: Timeout en fsockopen

Gracias DeeR

Me cuesta entender esto. A ver ?
Lo que yo quiero es establecer un tiempo máximo para la conexión... si el sitio al que envío el request está muy lento y pasan más de 10 segundos x ejemplo para abrir... cerrar la conexión.
Ahora por lo me dices en mi:
Código PHP:
$fp["$url"] = fsockopen $hostip80$errno$hostip30 ); 
El 30 es mi floal timeout ... es así ?
Pero en ese caso lo que yo veo en la práctica es que no lo respeta porque si el sitio donde apunto está lento se queda 'tildado' el script... no cierra la conexión.
Intenté también son stream_set_timeout pero no es aceptado por mi server, tira error (he leído por ahí que esto sucede pero no se explica muy bien por qué o cómo solucionarlo)
Alguna idea ?
Cariños
  #4 (permalink)  
Antiguo 28/01/2007, 19:33
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Timeout en fsockopen

Usa valores pequeños

Código PHP:
$socket fsockopen('ip'"80"$errno$errstr2);
    
if (
$socket === false)
{
            echo 
"socket cerrado";
}
else
{
    echo 
"socket abierto";
    
// segimos trabajando con el socket

Ami me lo respeta, si el server a donde abrimos el socket no responde en 2 segundos manda un warning que no ubo conexion..

Saludos
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 03:59.