Регистрация Войти
Войти через VK




Поиск по сайту



PHP Поиск



Работа с архивами Zlib

Модуль zlib, который можно найти на веб-странице по адресу: http://www.info-zip.org/pub/infozip/zlib, позволяет производить операции файлового ввода-вывода в файлах, которые были сжаты при помощи метода gzip. В этом модуле PHP используется библиотека zlib версии 1.0.9. Модуль содержит большую часть родственных функций файловой системы (с префиксом gz), которые могут работать как с обычными, так и с архивными файлами, но не с сокетами.

Для текущей версии PHP поддержка этих функций должна быть косвенно включена в обычные функции файловой системы. Таким образом, при подключении модуля zlib файловые функции могут работать с архивными файлами, как и с FTP- файлами. Для этого в строке имени файла нужно указывать специальный префикс zlib:, подобно указанию URL для доступа к FTP-файлам. Пример использования функций из этого пакета приведен в листинге 4.18.

Листинг 4.18
<?php
$filename='C:\ZZZ.gz';
// открыть файл для записи с максимальным сжатием 

$zp = gzopen($filename, "w9");
// записать строку в файл 
$s = "Only a test, test, test, test, test, test, test, test!\n";
gzwrite($zp, $s);
gzclose($zp); // закрыть файл 
$zp = gzopen($filename, "r");  
print gzread($zp, 3);   // прочитать 3 символа 
gzpassthru($zp); // выводить содержимое до конца файла и закрыть его

// еще раз вывести содержимое файла
if (readgzfile($filename) != strlen($s)) {
   echo "Error with zlib functions!";
}
?>

gzcompress. Сжатие строки методом Gz

string gzcompress (string data [, int level])

Функция возвращает сжатую строку. При помощи аргумента level можно указать степень сжатия. Это значение может находиться в интервале от 0 до 9.

См. также gzuncompress().

gzuncompress. Распаковка gz-сжатой строки

string gzuncompress (string data [, int length])

Функция возвращает оригинальную строку данных, сжатую ранее функцией gzcompress(). В случае возникновения ошибки возвращается значение FALSE. Ошибка может возникнуть, если при распаковке размер строки увеличивается более чем в 256 раз или становится больше, чем указано в необязательном аргументе length.

См. также gzcompress().

readgzfile. Вывод gz-файла

int readgzfile (string filename [, int use_include_path])

Функция читает файл filename, распаковывает его и выводит в стандартный поток вывода. Функция может также работать с обычными файлами, но тогда распаковка не производится.

Функция возвращает количество выведенных байтов или FALSE в случае возникновения ошибки. В случае ошибки также выводится сообщение об ошибке, если вывод сообщений не был заблокирован.

Необязательный аргумент include_path можно использовать с единичным значением, чтобы поиск файла также производился в директориях, заданных опцией include_path.

См. также gzpassthru(), gzfile() и gzopen().

gzfile. Чтение всего gz-файла в массив

array gzfile (string filename [, int use_include_path])

Функция аналогична readgzfile(), но распакованные данные не выводятся, а возвращаются в массиве.

См. также readgzfile() и gzopen().

gzopen. Открытие gz-файла

int gzopen (string filename, string mode [, int use_include_path])

Функция сходна с fopen(), но она работает с файлами gzip (.gz). Аргумент mode может принимать значения, как в функции fopen(). Помимо этого в режиме может указываться цифра, задающая степень используемого сжатия, например wb9. Также может использоваться значение f для фильтруемых данных, например wb6f, и значение h для компрессии Хаффмана (wb1h).

Функция также может использоваться для открытия обычного файла, но в этом случае gzread() будет читать данные файла без декомпрессии.

Функция возвращает дескриптор открытого файла или значение FALSE при возникновении ошибки. Используя полученный дескриптор, можно осуществлять операции ввода-вывода, и тогда сжатие и распаковка данных будут осуществляться автоматически.

Необязательный аргумент include_path можно использовать с единичным значением, чтобы поиск файла также производился в директориях, установленных опцией include_path.

Вызов функции выглядит достаточно просто:

$fp = gzopen ("/tmp/file.gz", "r")

См. также gzclose().

gzclose. Закрытие gz-файла

int gzclose (int zp)

Функция закрывает gz-файл, дескриптор которого zp ранее был успешно возвращен функцией gzopen().

gzread. Чтение последовательности символов из gz-файла

string gzread (int zp, int length)

Функция читает данные из файла. Количество читаемых байтов указывается аргументом length. Дескриптор zp должен быть ранее успешно возвращен функцией gzopen(). Чтение прекращается, когда будет прочитано length распакованных байтов, или если будет обнаружен символ конца файла EOF.

Пример использования функции приведен в листинге 4.19.

Листинг 4.19
$filename = "/usr/local/something.txt.gz";
$zd = gzopen ($filename, "r");
$contents = gzread ($zd, 10000);
gzclose ($zd);

См. также gzwrite(), gzopen(), gzgets(), gzgetss(), gzfile() и gzpassthru().

gzgetc. Чтение символа из gz-файла

string gzgetc (int zp)

Функция возвращает строку, содержащую единственный распакованный символ файла, имеющего дескриптор zp. Если встречается символ EOF, то возвращается значение FALSE.

Дескриптор zp должен быть ранее успешно возвращен функцией gzopen().

См. также gzopen() и gzgets().

gzgets. Чтение строки

string gzgets (int zp, int length)

Функция возвращает распакованную строку gz-файла, имеющего дескриптор zp.

Чтение прекращается, когда будет прочитано length-1 распакованных байтов, или если будет обнаружен символ конца файла EOF, или если встретится символ конца строки. При ошибке возвращается значение FALSE.

См. также gzopen(), gzgetc(), и fgets().

gzgetss. Аналог gzgets, удаляющий теги HTML и PHP из текста

string gzgetss (int zp, int length [, string allowable_tags])

В необязательном аргументе allowable_tags можно указать, какие теги не следует удалять.

См. также gzgets(), gzopen() и strip_tags().

gzpassthru. Вывод всего содержимого gz-файла до его конца

int gzpassthru (int zp)

Функция распаковывает и читает gz-файл с дескриптором zp от текущей позиции курсора и до конца файла, после чего полученное содержимое перенаправляется в стандартный поток вывода. При ошибке возвращается значение FALSE.

После вывода файл закрывается, для чего неявно вызывается функция gzclose().

gzwrite. Запись строки в gz-файл

int gzwrite (int zp, string string [, int length])

Функция упаковывает и записывает содержимое строки string в gz-файл с дескриптором zp. Если указан аргумент length, то запись прекращается после того, как будет записано length неупакованных байтов.

Если указывается аргумент length, то опция magic_quotes_runtime игнорируется и слеши не удаляются из строки string.

См. также gzread(), gzopen() и gzputs().

gzeof. Проверка наличия символа конца файла

int gzeof (int zp)

Функция возвращает значение TRUE, если текущий символ gz-файла является символом EOF или если при операции чтения произошла ошибка. В ином случае возвращается значение FALSE.

gztell. Определение позиции курсора gz-файла

int gztell (int zp)

Функция возвращает позицию, в которую будет осуществляться запись или чтение. При ошибке возвращается значение FALSE.

См. также gzopen(), gzseek() и gzrewind().

gzseek. Перемещение курсора gz-файла

int gzseek (int zp, int offset)

Функция передвигает курсор файла на количество байтов от его начала, которое указывает параметр offset.

Если файл открыт для чтения, то функция эмулируется, и она будет выполняться крайне медленно, потому что в сжатых файлах смещение нужно вычислять. Если файл открыт для записи, то курсор можно сдвигать только вперед, и тогда в файл просто записывается последовательность нулей, вплоть до новой позиции.

В случае успешного выполнения функция возвращает нулевое значение. При возникновении ошибки возвращается значение -1. Перемещение курсора после символа EOF не считается ошибкой.

См. также gztell() и gzrewind().

gzrewind. Перемещение курсора в начало gz-файла

int gzrewind (int zp)

Функция устанавливает курсор в начало файла. При ошибке возвращается нулевое значение.

См. также gzseek() и gztell().


.

Популярное:


Содержание:


Новое за неделю



Сейчас на сайте: 1283