(PHP 4, PHP 5, PHP 7, PHP 8)
feof — Prüft, ob ein Dateizeiger am Ende der Datei steht
stream
Der Zeiger auf eine Datei muss gültig sein und auf eine Datei verweisen, die vorher erfolgreich mit fopen() oder fsockopen() geöffnet (und nicht bereits von fclose() geschlossen) wurde.
Gibt true
zurück, wenn der Dateizeiger an EOF (Dateiende) steht oder ein
Fehler auftritt (inklusive Socket-Zeitüberschreitung); ansonsten wird
false
zurückgegeben.
Wenn eine mit fsockopen() geöffnete Verbindung nicht durch den Server geschlossen wurde, bleibt feof() hängen. Um dies zu umgehen, siehe folgendes Beispiel:
Beispiel #1 Handhabung von Zeitüberschreitungen mit feof()
<?php
function safe_feof($fp, &$start = NULL) {
$start = microtime(true);
return feof($fp);
}
/* Annahme: $fp wurde zuvor mit fsockopen() geöffnet */
$start = NULL;
$timeout = ini_get('default_socket_timeout');
while(!safe_feof($fp, $start) && (microtime(true) - $start) < $timeout)
{
/* Verarbeiten */
}
?>
Wenn der übergebene Dateizeiger nicht gültig ist, kann es zu einer
Endlosschleife kommen, weil feof() nicht true
zurückgibt.
Beispiel #2 feof()-Beispiel mit einem ungültigen Dateizeiger
<?php
// Wenn $file nicht gelesen werden kann oder nicht existiert, gibt fopen FALSE zurück
$file = @fopen("no_such_file", "r");
// Ein FALSE von fopen löst eine Warnung aus und führt hier zu einer Endlosschleife
while (!feof($file)) {
}
fclose($file);
?>