Foros del Web » Programando para Internet » PHP »

Timeout de la función fsockopen

Estas en el tema de Timeout de la función fsockopen en el foro de PHP en Foros del Web. Buenas, ¿Cúal es el timeout por defecto de la función fsockopen? Por otra parte, haber si entiendo una cosa bien. Al llamar a la función ...
  #1 (permalink)  
Antiguo 04/07/2004, 18:27
Avatar de Tximis  
Fecha de Ingreso: junio-2004
Ubicación: Bilbao
Mensajes: 328
Antigüedad: 13 años, 6 meses
Puntos: 2
Timeout de la función fsockopen

Buenas,

¿Cúal es el timeout por defecto de la función fsockopen?

Por otra parte, haber si entiendo una cosa bien. Al llamar a la función fsockopen, pueden pasar tres cosas:
  • 1. Llamada con éxito, la función devuelde un descriptor.
  • 2. La llamada falla, en este caso devuelve FALSE, ¿Cuales son las causas por las que puede fallar la funcion? ¿El timeout por ejemplo entraría aqui?
  • 3.- Timeout, devuelve ¿FALSE?.

Un saludo
  #2 (permalink)  
Antiguo 04/07/2004, 18:34
Avatar de Tximis  
Fecha de Ingreso: junio-2004
Ubicación: Bilbao
Mensajes: 328
Antigüedad: 13 años, 6 meses
Puntos: 2
Por otra parte, la sintaxis de la función es la siguiente:


Cita:
resource fsockopen( string destino, int puerto [, int errno [, string errstr [, float tiempo_espera]]])
Quiero pasarle a la función tres argumentos, destino, puerto y tiempo_espera. No quiero pasarle ni errno ni errstr, ¿Se podría hacer de alguna manera?

Gracias por adelantado
  #3 (permalink)  
Antiguo 05/07/2004, 10:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Todo lo que veas en una descripción de una sintax (en general y en todo manual sobre algún lenguaje) entre [] significa que ese parámetro es "opcional" .. así que en esa función sólo es obligatorio el "destino" y el "puerto" .. nada más.

Sobre los temas del timeout .. fijate en el comentario del manual oficial de PHP:

Cita:
Note: If you need to set a timeout for reading/writing data over the socket, use stream_set_timeout(), as the timeout parameter to fsockopen() only applies while connecting the socket.
Según eso .. el timeout de la función fsockopen() sólo aplica en el tiempo de la conexión en sí a la dirección y puerto que indicas .. Pero de lo que lea y escribas en el ya no depende de ese parámetro sino del uso de la función mencionada.

Por ende .. si falla en la conexión fsockopen() (por ejemplo por no encontrar el servicio que conectas en esa IP/dirección y/o puerto) .. debería devolver un FALSE ..

Un saludo,
  #4 (permalink)  
Antiguo 05/07/2004, 12:22
Avatar de Tximis  
Fecha de Ingreso: junio-2004
Ubicación: Bilbao
Mensajes: 328
Antigüedad: 13 años, 6 meses
Puntos: 2
Cita:
Iniciado por Cluster
Todo lo que veas en una descripción de una sintax (en general y en todo manual sobre algún lenguaje) entre [] significa que ese parámetro es "opcional" .. así que en esa función sólo es obligatorio el "destino" y el "puerto" .. nada más.
Pero no me refiero a eso, la función tiene 2 parametros obligatorios, y 3 opcionales.

Ahora, de esos 3 parámetros opcionales quiero mandar solo uno, el timeout, ¿Cómo lo haría? Por lo que veo estoy obligado a mandar los otros dos. A esto me refería

Cita:
Según eso .. el timeout de la función fsockopen() sólo aplica en el tiempo de la conexión en sí a la dirección y puerto que indicas .. Pero de lo que lea y escribas en el ya no depende de ese parámetro sino del uso de la función mencionada.
Efectívamente, pero ahora la misma pregunta, ¿Cual es el timeout por defecto?

Un saludo y muchas gracias por responer.
  #5 (permalink)  
Antiguo 05/07/2004, 13:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
¿Cual es el timeout por defecto?
PHP.ini (lo puedes ver también en un phpinfo())
; Default timeout for socket based streams (seconds)
default_socket_timeout = 60


Y la directiva:

max_execution_time (por defecto 30 segundos) . .
se puede controlar en tiempo de ejecución con set_time_limit() ..

------------

En principio .. esos parámetros opcionales son variables que debes definir pero que ahí se devolveran esos código de error en numero y en cadena .. Los cuales si quieres los usas y si no .. no.

fsockopen ( '192.168.0.1', '22',$error_numero,$error_string,20);

Es más .. podrías hacer algo tipo:

unset($error_numero);
unset($error_string);

Si realmente no quieres ese dato.

Un saludo,
  #6 (permalink)  
Antiguo 05/07/2004, 14:02
Avatar de Tximis  
Fecha de Ingreso: junio-2004
Ubicación: Bilbao
Mensajes: 328
Antigüedad: 13 años, 6 meses
Puntos: 2
Hola Cluster, ahora ya ha quedado claro todo, muchísimas gracias por la ayuda
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 07:38.