(PHP 4, PHP 5, PHP 7, PHP 8)
feof — Prueba el final del archivo
stream
El fichero al que se apunta debe ser válido, y debe apuntar a un fichero abierto por fopen() o fsockopen() (y que todavía no esté cerrado por fclose()).
Retorna true
si el puntero
handle
está al final del archivo o si
ocurre un error, de lo contrario, retorna false
.
Si una conexión abierta con fsockopen() no es cerrada por el servidor, feof() se bloqueará. Para evitar este comportamiento, consulte el ejemplo a continuación:
Ejemplo #1 Gestión de tiempos de espera excedidos feof()
<?php
function safe_feof($fp, &$start = NULL) {
$start = microtime(true);
return feof($fp);
}
/* Supongamos que $fp fue previamente abierto por fsockopen() */
$start = NULL;
$timeout = ini_get('default_socket_timeout');
while(!safe_feof($fp, $start) && (microtime(true) - $start) < $timeout)
{
/* Gestión */
}
?>
Si el puntero de archivo pasado no es válido, se obtendrá
un bucle infinito ya que feof() fallará al retornar true
.
Ejemplo #2 Ejemplo con feof() y un puntero de archivo inválido
<?php
// Si el archivo no puede ser leído o no existe, la función fopen retorna FALSE
$file = @fopen("no_such_file", "r");
// FALSE proveniente de fopen emitirá una advertencia y causará un bucle infinito aquí
while (!feof($file)) {
}
fclose($file);
?>