feof

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

feofПроверяет, достигнут ли конец файла

Описание

feof(resource $stream): bool

Функция проверяет, наступило ли событие EOF в указателе на файл.

Список параметров

stream

Требуется допустимый указатель на файл, который успешно открыли функцией fopen() или функцией fsockopen() и ещё не закрыли функцией fclose().

Возвращаемые значения

Функция возвращает true, если для файлового указателя наступило событие EOF или возникла ошибка (включая превышение времени ожидания сокета), иначе возвращает false.

Примечания

Внимание

Функция feof() зависнет, если сервер не закрыл подключение, открытое функцией fsockopen(). Следующий пример показывает, как этого избежать:

Пример #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);

?>