3

您如何检测流资源不再有效?我有一个脚本显然会杀死、破坏或威胁一些fsockek_open()连接资源,因此它经常会在没有任何警告的情况下消失。以下是我脚本中的 var_dumps。

resource(6) of type (stream)
resource(6) of type (stream)
resource(6) of type (stream)
resource(6) of type (Unknown) <-- causes feof() error on next check because it's not valid

像 return TRUE 这样的基本检查if($resource)会在像这样检查时导致问题。

if($resource AND !feof($resource))

对资源的第一次布尔检查有效,但 feof 失败导致错误,因为在测试条件的后半部分时流现在是未知的。

PHP Warning:  feof(): 6 is not a valid stream resource

这使得这样的例子不起作用。

while ($resource AND ! feof($resource)) <-- fails with error
{
    $buffer .= fread($resource);
}
fclose($resource);
4

1 回答 1

2

我以为我已经尝试过了,但是一个简单的资源检查似乎可以发现问题所在。

if(is_resource($this->socket) AND !feof($this->socket))
{
    // goodness
}
于 2012-10-03T03:39:55.250 回答