(PHP 4, PHP 5)
gzseek — Positioniert innerhalb einer gz-Datei
Setzt die Schreib-/Leseposition für die angegebene Datei. Dies entspricht dem C-API Aufruf gzseek(zp, offset, SEEK_SET).
Wenn die Datei für Lesezugriffe geöffnet ist wird diese Funktion emuliert und kann sehr langsam sein. Wenn die Datei zum Schreiben geöffnet ist kann nur vorwärts positioniert werden, die Funktion komprimiert dann eine Sequenz von Nullbytes um die gewünschte Position zu erreichen.
Die gz-Datei Resource. Dies muss auf eine gültige, erfolgreich mit gzopen() geöffnete Datei zeigen.
Die gewünschte Position.
whence gibt an auf welche Anfangsposition sich offset bezieht. Mögliche Werte sind:
Wird whence nicht angegeben so wird SEEK_SET angenommen.
Gibt 0 bei Erfolg und -1 bei Fehlern zurück. Beachten Sie das eine Suche über das Dateiende hinaus nicht als Fehler gilt.
Beispiel #1 gzseek() Beispiel
<?php
$gz = gzopen('somefile.gz', 'r');
gzseek($gz,2);
echo gzgetc($gz);
gzclose($gz);
?>
PHP/4.3.9
contrary to the notes, gzseek() returns -1 if I try to seek past the end of the file. here is a function that will return the last seekable position, and put the file pointer there.
/** sets the file pointer at the end of the file
* and returns the number of bytes in the file.
*/
function gzend($fh)
{
$d = 1<<14;
$eof = $d;
while ( gzseek($fh, $eof) == 0 ) $eof += $d;
while ( $d > 1 )
{
$d >>= 1;
$eof += $d * (gzseek($fh, $eof)? -1 : 1);
}
return $eof;
}