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

# feof

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

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

### 説明

function 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);
    ?>

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open