(PHP 4, PHP 5, PHP 7)
feof — Проверяет, достигнут ли конец файла
$handle
)Проверяет, достигнут ли конец файла.
handle
Указатель на файл должен быть корректным и указывать на файл, успешно открытый функциями fopen() или fsockopen() (и все еще не закрытым функцией fclose()).
Возвращает TRUE
, если указатель файла указывает на EOF или
произошла ошибка (в том числе таймаут сокета), иначе возвращает 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");
// FALSE от fopen вызовет предупреждение и следующий цикл станет бесконечным
while (!feof($file)) {
}
fclose($file);
?>