ストリームリソースが無効になったことをどのように検出しますか?私は、接続リソースを少し殺したり、傷つけたり、脅したりするスクリプトを持っている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);