我想知道如何设置socket_read
通话超时?第一次调用时socket_read
,它会等到发送数据,如果在 5 秒内没有发送数据,我想关闭连接。有什么帮助吗?我已经试过SO_RCVTIMEO
了,没有运气。
我正在创建一个套接字socket_create()
并在其上侦听连接,然后在连接时侦听数据,然后对其进行处理。当超时命中时,我想运行socket_shutdown()
然后socket_close()
.
这设置了 5 秒的套接字超时。
socket_set_option($socket,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>5, "usec"=>0));
您是否尝试过使用SO_RCVTIMEO的socket_set_option
输入操作的超时值。
我做了一个 socket_listen ,然后我用 time()+2 和一个 while 循环手动超时,里面有 nonblock set 和 socket_read() 。似乎工作正常。有什么选择吗?
更新:我发现将套接字设置为非阻塞,然后使用 socket_listen 提供了我需要的超时。
$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();