php - soapclient - Establecer un tiempo de espera en socket_read
soapclient timeout php (4)
¿Has probado socket_set_option con SO_RCVTIMEO?
Valor de tiempo de espera para las operaciones de entrada.
Me preguntaba cómo puedo establecer un tiempo de espera en una llamada socket_read
? La primera vez que llama socket_read
, espera hasta que se envíen los datos, y si no se envían datos dentro de 5 segundos, quiero apagar la conexión. ¿Alguna ayuda? Ya probé SO_RCVTIMEO
sin suerte.
Estoy creando un socket con socket_create()
y socket_create()
escuchando conexiones, luego, cuando estoy conectado, escucho los datos y luego hago algo con ellos. Cuando socket_shutdown()
el tiempo de espera, quiero ejecutar socket_shutdown()
y luego socket_close()
.
Hice un socket_listen y luego hice un tiempo de espera manual con time () + 2 y un ciclo while con nonblock set y socket_read () dentro. Parece estar funcionando bien. Alguna alternativa?
ACTUALIZACIÓN: descubrí que establecer el socket como nonblocking y luego usar socket_listen me proporcionó el tiempo de espera que necesitaba.
esto establece 5 segundos de tiempo de espera del socket.
socket_set_option($socket,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>5, "usec"=>0));
$read_socket = socket_select($read, $write = NULL, $except = NULL, 10); // 10 - Timeout
if($read_socket === FALSE)
$this->End();
elseif($read_socket === 0)
return FALSE;
$pdu_ = socket_read($this->session, 102400);
if($read_socket && !strlen($pdu_))
$this->End();