【问题标题】:PHP - Detecting remote host disconnectionPHP - 检测远程主机断开连接
【发布时间】:2012-02-23 12:44:04
【问题描述】:

根据the documentationsocket_read()应该在远程主机关闭连接时返回FALSE,当没有更多数据要读取时返回一个空字符串''。但是,在我的测试过程中,它永远不会返回FALSE,即使我关闭了远程主机连接。以下是相关代码:

$data = '';

do {
    $read = socket_read($socket, 1024);

    if ($read === FALSE) {
        throw new SocketDisconnectException();
    }

    $data .= $read;
} while ($read !== '');

SocketDisconnectException 永远不会被抛出,即使我断开了远程主机连接。我已经两次和三次检查了我没有捕获异常并丢弃它,甚至将echoexit 放入条件中作为健全性检查。

这个函数的行为是否改变了,还是我做错了什么?

【问题讨论】:

    标签: php sockets


    【解决方案1】:

    似乎有一个错误,如果您使用 PHP_NORMAL_READ,它将在远程断开连接时返回 false,但 PHP_BINARY_READ 将返回“”。 PHP_BINARY_READ 是默认值,如果适合您的目的,我建议您尝试 PHP_NORMAL_READ。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多