Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/10/2014, 08:29
corei7
 
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);