Foros del Web » Programando para Internet » PHP »

socket_read - Establecer timeout

Estas en el tema de socket_read - Establecer timeout en el foro de PHP en Foros del Web. Hola, tengo un Script en un servidor Linux que abre un socket en una IP y puerto determinados. He hecho un cliente TCP en Windows ...
  #1 (permalink)  
Antiguo 15/10/2014, 08:29
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 10 meses
Puntos: 2
socket_read - Establecer timeout

Hola, tengo un Script en un servidor Linux que abre un socket en una IP y puerto determinados. He hecho un cliente TCP en Windows que envía paquetes al servidor, hasta ahí todo funciona correctamente. El problema viene cuando el contenido del paquete está vacío. El servidor no desconecta el cliente ya que se queda esperando el contenido del paquete, sin caducidad... En este Loop se procesan las peticiones:

Código:
	while (true){
		$client = socket_accept($sock);
		
                //Aquí se detiene la ejecución ya que se queda esperando al contenido del
                //paquete deja abierta la conexión con el cliente permanentemente
                $input = socket_read($client, 1024) or die("Cannot read from socket");
		
		save_data($input);
		socket_write($client, $input);
		socket_close($client);
	}
Cómo puedo establecer un tiempo de caducidad para "socket_read" ?

PD: He probado con el siguiente código, pero me da fallo...
Código:
  
$timeout = array('sec'=>1,'usec'=>500000);
socket_set_option($client,SOL_SOCKET,SO_RCVTIMEO,$timeout);
  #2 (permalink)  
Antiguo 15/10/2014, 09:04
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: socket_read - Establecer timeout

Quizás te sirve esta función:

http://php.net/manual/es/function.st...et-timeout.php

Saludos ;)

EDIT: Sorry, no funciona con socket_create >_<
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 15/10/2014, 09:12
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: socket_read - Establecer timeout

Cita:
Iniciado por Eleazan Ver Mensaje
Quizás te sirve esta función:

http://php.net/manual/es/function.st...et-timeout.php

Saludos ;)

EDIT: Sorry, no funciona con socket_create >_<
Gracias por intentar ayudar!
  #4 (permalink)  
Antiguo 15/10/2014, 09:56
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: socket_read - Establecer timeout

Por cierto:
Código PHP:
socket_set_option($client,SOL_SOCKET,SO_RCVTIMEO,$timeout); 
Deberia ser sobre $sock, no $client...
¿Lo has probado? :D
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 15/10/2014, 10:27
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: socket_read - Establecer timeout

Cita:
Iniciado por Eleazan Ver Mensaje
Por cierto:
Código PHP:
socket_set_option($client,SOL_SOCKET,SO_RCVTIMEO,$timeout); 
Deberia ser sobre $sock, no $client...
¿Lo has probado? :D
Sí, lo he probado y nada... Pero de todas formas, "$sock" es el socket maestro, asignado a la IP y Puerto del servidor para la entrada de clientes, ese puerto debe estar siempre activo, no tiene que caducar nunca... El que tiene que caducar es el socket del cliente después de enviar el paquete TCP... Gracias

Etiquetas: conexion, socket, timeout
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 16:36.