PHP feof 文件系统函数

  • 定义和用法

    feof - 测试文件指针是否到了文件结束的位置
  • 版本支持

    PHP4 PHP5 PHP7
    支持 支持 支持
  • 语法

    feof ( resource $handle )   
    
    测试文件指针是否到了文件结束的位。
  • 参数

    参数 必需的 描述
    handle 文件指针必须有效,并且是通过 fopen()fsockopen() 成功打开的(并还未由 fclose() 关闭)。
  • 返回值

    如果文件指针到了 EOF 或者出错时则返回 TRUE,否则返回一个错误(包括 socket 超时),其它情况则返回 FALSE。
  • 示例

    如果服务器没有关闭由 fsockopen() 所打开的连接,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)
    {
    /* Handle */
    }
    ?>
    
    如果传递的文件指针无效可能会陷入无限循环中,因为 feof() 不会返回 TRUE。
    // 如果文件不可读取或者不存在,fopen 函数返回 FALSE
    $file = @fopen("no_such_file", "r");
    
    // 来自 fopen 的 FALSE 会发出一条警告信息并在这里陷入无限循环
    while (!feof($file)) {
    }
    
    fclose($file);
    
  • 相关函数

    fopen() - 打开文件或者 URL
    fsockopen() - 打开一个网络连接或者一个Unix套接字连接