Учебник РНР
Назад Вперёд

CX. Функции Zlib-компрессии

Этот модель использует функции zlib, авторы Jean-loup Gailly и Mark Adler, для прозрачного чтения и записи архивированных файлов gzip (.gz). вы должны использовать версию zlib >= 1.0.9 с этим модулем.

Этот модель содержит версии большинства filesystem-функций, которые работают с gzip-архивами (а также с  несжатыми файлами, но не с сокетами).

Примечание: Версия 4.0.4 вводит fopen-оболочку для .gz-файлов, так что вы можете использовать специальный 'zlib:' URL для доступа к сжатым файлам прозрачно, с помощью нормальных f*() функций доступа к файлам, если введёте к filename или path префикс 'zlib:' при вызове fopen().

В версии 4.3.0 этот специальный префикс был изменён на 'zlib://', чтобы предотвратить разночтение с именами файлов, содержащими ':'.

Это требует библиотеки времени выполнения С, которая предоставляет функцию fopencookie(). Насколько я знаю, GNU libc является единственной библиотекой, предоставляющей эту возможность.

Небольшой пример кода

Здесь открывается временный файл и в него записывается тестовая строка, затем дважды печатается содержимое этого файла.

Пример 1. Небольшой пример Zlib

<?php

$filename = tempnam ('/tmp', 'zlibtest').'.gz';
print "<html>\n<head></head>\n<body>\n<pre>\n";
$s = "Only a test, test, test, test, test, test, test, test!\n";

// открыть файл для записи с максимальным сжатием
$zp = gzopen($filename, "w9");

// записать строку в файл
gzwrite($zp, $s);

// закрыть файл
gzclose($zp);

// открыть файл для чтения
$zp = gzopen($filename, "r");

// считать три символа
print gzread($zp, 3);

// выводить до конца файла и закрыть его
gzpassthru($zp);

print "\n";

// открыть файл и напечатать его содержимое (во второй раз)
if (readgzfile($filename) != strlen($s)) {
echo "Error with zlib functions!";
}
unlink($filename);
print "</pre>\n</h1></body>\n</html>\n";

?>
Содержание
gzclose - закрывает открытый указатель gz-файла
gzcompress - сжимает строку
gzdeflate - выкачивает строку
gzencode - создаёт gzip-сжатуюю строку
gzeof - проверяет end-of-file в указателе gz-файла
gzfile - читает весь gz-файл в массив
gzgetc - получает символ из указателя на gz-файл
gzgets - получает строчку из указателя файла
gzgetss - получает строчку из указателя gz-файла и вырезает тэги HTML
gzinflate - закачивает выкачанную строку
gzopen - открывает gz-файл
gzpassthru - выводит оставшиеся в указателе gz-файла данные
gzputs - записывает в указатель gz-файла
gzread - Binary-safe чтение gz-файла
gzrewind - возвращает в начало позицию указателя gz-файла
gzseek - ищет указатель gz-файла
gztell - говорит указателю gz-файла позицию чтения/записи
gzuncompress - разжимает выкачанную строку
gzwrite - Binary-safe запись в gz-файл
readgzfile - выводит gz-файл

НазадОглавление Вперёд
zip_readВверх gzclose