检测无效的PHP资源流

时间:2012-10-03 03:23:27

标签: php sockets

如何检测到流资源不再有效?我有一个脚本,显然会杀死,伤害或威胁一个小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

if($resource)这样的基本检查会返回TRUE,这会导致像这样检查时出现问题。

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);

1 个答案:

答案 0 :(得分:2)

我以为我曾经尝试过这个,但是一个简单的资源检查似乎可以解决它的问题。

if(is_resource($this->socket) AND !feof($this->socket))
{
    // goodness
}