feof
(PHP 4, PHP 5, PHP 7, PHP 8)
feof — Testa pelo fim-de-arquivo em um ponteiro de arquivo
Parâmetros
stream
-
O ponteiro de arquivo deve ser válido e deve apontar para um arquivo aberto com sucesso por fopen() ou fsockopen() (e ainda não fechado por fclose()).
Valor Retornado
Retorna true
se o ponteiro estiver no fim do arquivo ou um erro ocorrer
(incluindo um limite de tempo de socket); caso contrário retorna false
.
Notas
Se uma conexão aberta por fsockopen() não foi fechada pelo servidor, feof() irá travar. Para contornar isto, veja o exemplo abaixo:
Example #1 Handling timeouts with feof()
<?php
function safe_feof($fp, &$start = NULL) {
$start = microtime(true);
return feof($fp);
}
/* Assumindo que $fp foi previamente aberto por fsockopen() */
$start = NULL;
$timeout = ini_get('default_socket_timeout');
while(!safe_feof($fp, $start) && (microtime(true) - $start) < $timeout)
{
/* Handle */
}
?>
Se o ponteiro de arquivo passado não for válido pode-se chegar a um loop infinito, porque
feof() falha em retornar true
.
Example #2 Exemplo de feof() com um ponteiro de arquivo inválido
<?php
// se o arquivo não puder ser lido ou não existir a função fopen retorna FALSE
$file = @fopen("no_such_file", "r");
// FALSE a partir do fopen irá emitir um aviso (warning) e resultar em um loop infinito aqui
while (!feof($file)) {
}
fclose($file);
?>