Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-检测远程主机断开连接_Php_Sockets - Fatal编程技术网

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,如果它适合您的目的的话