(PHP 4, PHP 5, PHP 7, PHP 8)
feof — 測(cè)試文件指針是否到了文件結(jié)束的位置
$handle
): bool測(cè)試文件指針是否到了文件結(jié)束的位。
如果文件指針到了 EOF 或者出錯(cuò)時(shí)則返回 true
,否則返回一個(gè)錯(cuò)誤(包括 socket
超時(shí)),其它情況則返回 false
。
如果服務(wù)器沒(méi)有關(guān)閉由 fsockopen() 所打開(kāi)的連接,feof() 會(huì)一直等待直到超時(shí)。要解決這個(gè)問(wèn)題可參見(jiàn)以下范例:
示例 #1 處理 feof() 的超時(shí)
<?php
function safe_feof($fp, &$start = NULL) {
$start = microtime(true);
return feof($fp);
}
/* $fp 的賦值是由之前 fsockopen() 打開(kāi) */
$start = NULL;
$timeout = ini_get('default_socket_timeout');
while(!safe_feof($fp, $start) && (microtime(true) - $start) < $timeout)
{
/* Handle */
}
?>
如果傳遞的文件指針無(wú)效可能會(huì)陷入無(wú)限循環(huán)中,因?yàn)?feof() 不會(huì)返回 true
。
示例 #2 使用無(wú)效文件指針的 feof() 例子
<?php
// 如果文件不可讀取或者不存在,fopen 函數(shù)返回 FALSE
$file = @fopen("no_such_file", "r");
// 來(lái)自 fopen 的 FALSE 會(huì)發(fā)出一條警告信息并在這里陷入無(wú)限循環(huán)
while (!feof($file)) {
}
fclose($file);
?>