根据文档,socket_read()应该FALSE在远程主机关闭连接时返回,并''在没有更多数据要读取时返回空字符串.但是,在我的测试期间FALSE,即使关闭远程主机连接,它也永远不会返回.这是相关代码:
$data = '';
do {
$read = socket_read($socket, 1024);
if ($read === FALSE) {
throw new SocketDisconnectException();
}
$data .= $read;
} while ($read !== '');
Run Code Online (Sandbox Code Playgroud)
将SocketDisconnectException永远不会被抛出,甚至当我断开远程主机连接.我已经双重和三重检查,我不是捕捉异常并丢弃它,即使在抛出echo和exit入条件的完整性检查.
这个功能的行为是否改变了,或者我做错了什么?
似乎有一个错误,如果您使用 PHP_NORMAL_READ 它将在远程断开连接时返回 false,但 PHP_BINARY_READ 将返回“”。PHP_BINARY_READ 是默认值,如果适合您的目的,我建议尝试 PHP_NORMAL_READ。
| 归档时间: |
|
| 查看次数: |
1442 次 |
| 最近记录: |