我有一个连接到服务器并等待从服务器发送文本行的套接字客户端。
我打开连接:
$handle = fsockopen(MY_IP_ADDRESS,MY_PORT,$sockErrno,$sockErrStr);
stream_set_blocking($handle,1);
stream_set_timeout($handle,MY_SOCKET_TIMEOUT);
然后:
while (true) {
$inString = fgets($handle,256);
do some stuff with the received data...
}
这一切都很好。收到的消息之间没有特定的间隔。消息可能每秒到达数个或几分钟内不到达。
stream_set_timeout 设置为 60 秒......如果没有收到任何消息,那么我只是循环并再次将 fgets 排队。
有时,由于某种原因,连接会中断。
我希望能够检测到断开的连接,以便开始尝试重新连接。
有没有办法检测断开的连接?当流超时发生时,我可以检查哪些东西会告诉我不再有连接?