stream_set_timeout socket soapclient php sockets timeout

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();