array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'es', ), 'this' => array ( 0 => 'function.feof.php', 1 => 'feof', ), 'up' => array ( 0 => 'ref.filesystem.php', 1 => 'Funciones del Sistema de Archivos', ), 'prev' => array ( 0 => 'function.fdatasync.php', 1 => 'fdatasync', ), 'next' => array ( 0 => 'function.fflush.php', 1 => 'fflush', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'es', 'path' => 'reference/filesystem/functions/feof.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
feof — Comprueba si el puntero a un archivo está al final del archivo
Comprueba si el puntero a un archivo está al final del archivo.
handle
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()).
Devuelve true
si el puntero al archivo está en EOF o produce un error
(incluido el tiempo de espera del socket); de otro modo devuelve false
.
Si una conexión abierta por fsockopen() no se cerró por el servidor, feof() se colgará. Para solucionar esto, vea el ejemplo siguiente:
Ejemplo #1 Manejar tiempos de espera con feof()
<?php
function feof_segura($fp, &$inicio = NULL) {
$inicio = microtime(true);
return feof($fp);
}
/* Asumir que $fp está previamente abierto por fsockopen() */
$inicio = NULL;
$timeout = ini_get('default_socket_timeout');
while(!feof_segura($fp, $inicio) && (microtime(true) - $inicio) < $timeout)
{
/* Gestor */
}
?>
Si el puntero al archivo pasado a la función no es válido, se podría dar un bucle infinito,
ya que feof() falla para devolver true
.
Ejemplo #2 Ejemplo de feof() con un puntero a un archivo no válido
<?php
// si el archivo no se puede leer o no existe, la función fopen devuelve FALSE
$archivo = @fopen("ningún_archivo", "r");
// FALSE desde fopen emitirá una advertencia y resultará en un bucle infinito aquí
while (!feof($archivo)) {
}
fclose($archivo);
?>