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;
}
gzseek
(PHP 4, PHP 5)
gzseek — Positioniert innerhalb einer gz-Datei
Beschreibung
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.
Parameter-Liste
- zp
-
Die gz-Datei Resource. Dies muss auf eine gültige, erfolgreich mit gzopen() geöffnete Datei zeigen.
- offset
-
Die gewünschte Position.
- whence
-
whence gibt an auf welche Anfangsposition sich offset bezieht. Mögliche Werte sind:
- SEEK_SET - Setzt die Position auf offset Bytes vom Dataianfang.
- SEEK_CUR - Verschiebt die Position um offset Bytes ausgehend von der aktuellen Position.
Wird whence nicht angegeben so wird SEEK_SET angenommen.
Rückgabewerte
Gibt 0 bei Erfolg und -1 bei Fehlern zurück. Beachten Sie das eine Suche über das Dateiende hinaus nicht als Fehler gilt.
Beispiele
Beispiel #1 gzseek() Beispiel
<?php
$gz = gzopen('somefile.gz', 'r');
gzseek($gz,2);
echo gzgetc($gz);
gzclose($gz);
?>
Siehe auch
- gztell() - Ermittelt die aktuelle Position in einer gz-Datei
- gzrewind() - Setzt die Dateiposition auf den Anfang zurück
gzseek
12-Apr-2005 05:47
