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

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

1 に答える 1

2

私はこれを試したと思っていましたが、簡単なリソースチェックで問題が解決したようです。

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