feof

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

説明

bool feof(resource $stream)

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

パラメータ

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)
{
 /* 処理 */
}
?>

警告

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

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

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

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

fclose($file);
?>