James Hartig James Hartig - 4 days ago 6
PHP Question

Set a timeout on socket_read

I was wondering how can I set a timeout on a

socket_read
call? The first time it calls
socket_read
, it waits till data is sent, and if no data is sent within 5 secs I want to shutdown the connection. Any Help? I already tried
SO_RCVTIMEO
with no luck.

I'm creating a socket with
socket_create()
and listening on it for connections, then when connected I listen for the data and then do something with it. When the timeout hits, I want to run
socket_shutdown()
and then
socket_close()
.

Answer

I did a socket_listen and then I made a manual timeout with time()+2 and a while loop with nonblock set and socket_read() inside. Seems to be working ok. Any alternatives?

UPDATE: I found that setting the socket as nonblocking and then using socket_listen provided the timeout I needed.

Comments