Signatur
Beschreibung
gzeof() prüft, ob der Dateipositionszeiger eines mit gzopen() geöffneten gz-Streams das Ende der Datei (End of File, EOF) erreicht hat. Die Funktion gibt true zurück, wenn das Ende der Datei erreicht oder ein Fehler aufgetreten ist.
Typischerweise wird gzeof() in Schleifen eingesetzt, um zeilenweise oder blockweise durch eine komprimierte Datei zu iterieren, ähnlich wie feof() für gewöhnliche Datei-Handles. Solange gzeof() false zurückgibt, können weitere Daten mit gzread(), gzgets() oder ähnlichen Funktionen gelesen werden.
Der übergebene $stream-Parameter muss ein gültiges, mit gzopen() geöffnetes Datei-Handle sein. Die Verwendung mit einem normalen fopen()-Handle ist nicht zulässig und führt zu einem Fehler.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $stream Pflicht | resource | Ein gültiges gz-Datei-Handle, das zuvor mit gzopen() geöffnet wurde. |
Rückgabewert
true zurück, wenn das Ende der gz-Datei erreicht wurde oder ein Fehler aufgetreten ist, andernfalls false.Beispiele
Zeilenweise Ausgabe einer gz-komprimierten Datei
<?php
$handle = gzopen('beispiel.txt.gz', 'r');
if ($handle === false) {
die('Datei konnte nicht geöffnet werden.');
}
while (!gzeof($handle)) {
$zeile = gzgets($handle);
if ($zeile !== false) {
echo $zeile;
}
}
gzclose($handle);
?>
Blockweises Lesen einer gz-Datei
<?php
$handle = gzopen('archiv.gz', 'r');
if ($handle === false) {
die('Fehler beim Öffnen der Datei.');
}
$inhalt = '';
while (!gzeof($handle)) {
$inhalt .= gzread($handle, 1024); // 1024 Bytes pro Durchlauf lesen
}
gzclose($handle);
echo 'Gelesene Bytes: ' . strlen($inhalt);
?>
// Wichtig · Fallstricke
Hinweis: gzeof() gibt auch true zurück, wenn ein Fehler beim Lesen der Datei aufgetreten ist. Es empfiehlt sich daher, den Rückgabewert von gzread() oder gzgets() zusätzlich auf false zu prüfen, um Lesefehler von einem echten EOF zu unterscheiden.
Die Funktion setzt die Zlib-Erweiterung voraus, die in den meisten PHP-Installationen standardmäßig aktiviert ist. Sie ist ausschließlich für gz-komprimierte Dateien gedacht und darf nicht mit normalen Datei-Handles (fopen()) verwendet werden.