【发布时间】:2012-02-23 12:44:04
【问题描述】:
根据the documentation,socket_read()应该在远程主机关闭连接时返回FALSE,当没有更多数据要读取时返回一个空字符串''。但是,在我的测试过程中,它永远不会返回FALSE,即使我关闭了远程主机连接。以下是相关代码:
$data = '';
do {
$read = socket_read($socket, 1024);
if ($read === FALSE) {
throw new SocketDisconnectException();
}
$data .= $read;
} while ($read !== '');
SocketDisconnectException 永远不会被抛出,即使我断开了远程主机连接。我已经两次和三次检查了我没有捕获异常并丢弃它,甚至将echo 和exit 放入条件中作为健全性检查。
这个函数的行为是否改变了,还是我做错了什么?
【问题讨论】: