feof

(PHP 4, PHP 5, PHP 7, PHP 8)

feofファイルポインタがファイル終端に達しているかどうか調べる

説明

feof(resource $stream): bool

ファイルポインタがファイル終端に達しているかどうかを調べます。

パラメータ

stream

ファイルポインタは、有効なファイルポインタである必要があり、 fopen() または fsockopen() で正常にオープンされた (そしてまだ fclose() でクローズされていない) ファイルを指している必要があります。

戻り値

ファイルポインタが EOF に達しているかまたはエラー (ソケットタイムアウトを含みます) の場合に true 、 その他の場合に false を返します。

注意

警告

fsockopen() でオープンした接続がサーバーによって閉じられていない場合、feof() はハングします。回避策は以下の例を参照ください。

例1 feof() のタイムアウト処理

<?php
function safe_feof($fp, &$start NULL) {
 
$start microtime(true);

 return 
feof($fp);
}

/* $fp は事前に fsockopen() でオープンしているものとします */

$start NULL;
$timeout ini_get('default_socket_timeout');

while(!
safe_feof($fp$start) && (microtime(true) - $start) < $timeout)
{
 
/* 処理 */
}
?>

警告

無効なファイルポインタを渡した場合、無限ループに陥ることがあります。 なぜなら feof()true を返すことができないからです。

例2 feof() に無効なファイルポインタを使用する例

<?php
// ファイルを読み込めなかったりファイルが存在しなかったりした場合、
// fopen 関数は FALSE を返します。
$file = @fopen("no_such_file""r");

// fopen からの FALSE が警告を発生させ、ここで無限ループとなります。
while (!feof($file)) {
}

fclose($file);
?>

関連キーワード:  ポインタ, 終端, feof, ファイル, stream, 警告, fsockopen, オープン, ソケットタイムアウト, 参照