如何检测到流资源不再有效?我有一个脚本,显然会杀死,伤害或威胁一个小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);
答案 0 :(得分:2)
我以为我曾经尝试过这个,但是一个简单的资源检查似乎可以解决它的问题。
if(is_resource($this->socket) AND !feof($this->socket))
{
// goodness
}