gzseek

(PHP 3, PHP 4, PHP 5)

gzseek -- Seek on a gz-file pointer

说明

int gzseek ( resource zp, int offset )

Sets the file position indicator for the given file pointer to the given offset byte into the file stream. Equivalent to calling (in C) gzseek(zp, offset, SEEK_SET).

If the file is opened for reading, this function is emulated but can be extremely slow. If the file is opened for writing, only forward seeks are supported; gzseek() then compresses a sequence of zeroes up to the new starting position.

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

offset

The seeked offset.

返回值

Upon success, returns 0; otherwise, returns -1. Note that seeking past EOF is not considered an error.

范例

例子 1. gzseek() example

<?php
$gz
= gzopen('somefile.gz', 'r');
gzseek($gz,2);
echo
gzgetc($gz);
gzclose($gz);
?>


add a note add a note User Contributed Notes
dperham at wgate dot com
12-Apr-2005 11: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;
}