Signatur
Beschreibung
gztell() gibt die aktuelle Position des Dateizeigers der angegebenen gz-Datei-Ressource zurück. Die zurückgegebene Position bezieht sich auf die unkomprimierten Daten, nicht auf die tatsächliche Position innerhalb der komprimierten Datei auf dem Datenträger.
Die Funktion ist das gz-Äquivalent zu ftell() und wird typischerweise zusammen mit gzseek() und gzrewind() verwendet, um innerhalb einer gz-Datei zu navigieren. Sie ist sinnvoll, wenn man nach Lese- oder Schreiboperationen die aktuelle Leseposition kennen möchte, etwa um später dorthin zurückzuspringen oder Fortschrittsinformationen zu ermitteln.
Die Ressource muss zuvor mit gzopen() geöffnet worden sein. Im Fehlerfall – z. B. wenn eine ungültige Ressource übergeben wird – gibt die Funktion false zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $stream Pflicht | resource | Eine gültige gz-Datei-Ressource, die zuvor mit gzopen() geöffnet wurde. |
Rückgabewert
false im Fehlerfall.Beispiele
Aktuelle Zeigerposition nach dem Lesen ermitteln
<?php
$gz = gzopen('beispiel.gz', 'rb');
if ($gz === false) {
die('Datei konnte nicht geöffnet werden.');
}
// Ersten 100 Bytes lesen
$data = gzread($gz, 100);
// Aktuelle Position des Dateizeigers
$pos = gztell($gz);
echo "Aktuelle Position nach dem Lesen: " . $pos . " Bytes\n";
gzclose($gz);
Position speichern und mit gzseek() wiederherstellen
<?php
$gz = gzopen('beispiel.gz', 'rb');
if ($gz === false) {
die('Datei konnte nicht geöffnet werden.');
}
// Einige Daten lesen
gzread($gz, 50);
// Aktuelle Position merken
$merkPos = gztell($gz);
echo "Gemerkte Position: " . $merkPos . "\n";
// Weitere Daten lesen
$abschnitt = gzread($gz, 200);
echo "Weiterer Abschnitt (erste 20 Zeichen): " . substr($abschnitt, 0, 20) . "\n";
// Zurück zur gemerkten Position
gzseek($gz, $merkPos);
echo "Position nach gzseek: " . gztell($gz) . "\n";
gzclose($gz);
// Wichtig · Fallstricke
Hinweis: Die zurückgegebene Position bezieht sich auf die unkomprimierten Daten. Sie ist daher nicht mit der physischen Byteposition in der .gz-Datei auf dem Datenträger identisch.
gzseek() ist bei gz-Dateien im Vergleich zu normalen Dateien langsamer, da rückwärtiges Springen ein Neueinlesen der Datei vom Anfang erfordert. gztell() selbst ist jedoch eine schnelle Operation ohne nennenswerten Overhead.