PHP-检测远程主机断开连接
根据,当远程主机关闭连接时,PHP-检测远程主机断开连接,php,sockets,Php,Sockets,根据,当远程主机关闭连接时,socket\u read()应返回FALSE,当没有更多数据可读取时,应返回空字符串'。但是,在测试期间,即使关闭远程主机连接,它也不会返回FALSE。以下是相关代码: $data = ''; do { $read = socket_read($socket, 1024); if ($read === FALSE) { throw new SocketDisconnectException(); } $data
socket\u read()
应返回FALSE
,当没有更多数据可读取时,应返回空字符串'
。但是,在测试期间,即使关闭远程主机连接,它也不会返回FALSE
。以下是相关代码:
$data = '';
do {
$read = socket_read($socket, 1024);
if ($read === FALSE) {
throw new SocketDisconnectException();
}
$data .= $read;
} while ($read !== '');
SocketDisconnectException
永远不会抛出,即使我断开了远程主机连接。我已经两次和三次检查了我是否没有捕获异常并丢弃它,甚至在条件中加入了回显
和退出
,作为一个健全性检查
此函数的行为是否已更改,或者我是否做错了什么?似乎存在一个错误,如果使用PHP\u NORMAL\u READ,则在远程断开连接时返回false,但PHP\u BINARY\u READ将返回“”。PHP_BINARY_READ是默认值,我建议您尝试使用PHP_NORMAL_READ,如果它适合您的目的的话