PHP Doku:: Positioniert innerhalb einer gz-Datei - function.gzseek.html

Verlauf / Chronik / History: (2) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzErweiterungen zur Datenkompression und ArchivierungZlib-KomprimierungZlib-Funktionengzseek

Ein Service von Reinhard Neidl - Webprogrammierung.

Zlib-Funktionen

<<gzrewind

gztell>>

gzseek

(PHP 4, PHP 5)

gzseekPositioniert innerhalb einer gz-Datei

Beschreibung

int gzseek ( resource $zp , int $offset [, int $whence = SEEK_SET ] )

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


Ein BenutzerBeitrag:
- Beiträge aktualisieren...
dperham at wgate dot com
12.04.2005 17:47
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;
}



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)