Функции сжатия Zlib
Этот модуль позволяет работать со сжатыми файлами gzip (.gz) стандартным
методом, наподобие функций файловой системы
(исключение составляют только сокеты).
Замечание:
В версии 4.0.4 появился новый протокол 'zlib:' для доступа прямого к сжатым
файлам через обычные функции f*() (для этого нужно было добавить 'zlib:'
в начало пути к файлу при вызове fopen().
В версии 4.3.0, префикс изменился на 'zlib://' для предотвращения многозначности
в случае файлов, содержащих ':' в имени.
Требуется библиотека времени выполнения C, предоставляющая функцию fopencookie().
Насколько нам известно, такой библиотекой является только GNU libc.
Этот модуль использует библиотеку zlib,
написанную Jean-loup Gailly и Mark Adler. Используйте версию zlib >= 1.0.9 с этим модулем.
Поддержка Zlib при стандартной сборке PHP отсутствует. Чтобы изменить это, добавьте ключ --with-zlib[=DIR] при запуске сценария ./configure
Версия PHP для
Windows имеет встроенную поддержку данного расширения. Это означает, что
для использования данных функций не требуется загрузка никаких
дополнительных расширений. Замечание:
Т.к. библиотека zlib отсутствует в Windows, она встроена в PHP начиная с версии 4.3.0.
Поведение этих функций зависит от установок в php.ini.
Модуль zlib предоставляет возможность сжатия передаваемых страниц (в т.ч. динамических)
на лету, если браузер это поддерживает. За сжатие отвечают три параметра в конфигурационном файле php.ini.
Таблица 1. Конфигурационные параметры, касающиеся Zlib Параметр | Значение по умолчанию | Переменная окружения |
---|
zlib.output_compression | "Off" | PHP_INI_ALL | zlib.output_compression_level | "-1" | PHP_INI_ALL | zlib.output_handler | "" | PHP_INI_ALL |
Для подробностей и определения переменных PHP_INI_* см.
ini_set().
Краткое разъяснение конфигурационных
директив.
- zlib.output_compression
boolean/integer
Сжимать ли страницы. Если значение равно "On" в php.ini или в настройках Apache,
страницы будут сжиматься если обозреватель посылает заголовок "Accept-Encoding: gzip" или
"deflate". при этом в вывод будут добавлены заголовки "Content-Encoding: gzip" (соответственно
"deflate") и "Vary: Accept-Encoding".
Аргументы также могут быть целого типа, так вы можете установить размер буфера
(дискретизации) вывода (по умолчанию 4 Кб).
Замечание:
output_handler должен быть
пустым, если выбрано значение 'On'! Вместо него следует использовать zlib.output_handler.
- zlib.output_compression_level
integer
Уровень сжатия.
- zlib.output_handler
string
Если zlib.output_compression активировано здесь, указывать дополнительные
обработчики вывода (output handlers) нельзя. Этот параметр делает то же,
что и output_handler, но в другом
порядке.
Данное расширение не определяет никакие типы ресурсов.
Перечисленные ниже константы определены данным расширением и могут быть
доступны только в том случае, если PHP был собран с
поддержкой этого расширения или же в том случае, если
данное расширение подгружается во время выполнения.
Здесь открывается временный файл, в него записывается строка, затем дважды печатается содержимое этого файла.
Пример 1. Небольшой пример использования Zlib
<?php
$filename = tempnam('/tmp', 'zlibtest') . '.gz'; echo "<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");
// прочитать три символа echo gzread($zp, 3);
// выводить до конца файла, затем закрыть его gzpassthru($zp); gzclose($zp);
echo "\n";
// открыть файл и напечатать его содержимое (во второй раз) if (readgzfile($filename) != strlen($s)) { echo "Error with zlib functions!"; } unlink($filename); echo "</pre>\n</body>\n</html>\n";
?>
|
|
Содержание- gzclose -- Закрывает открытый gz-указатель
- gzcompress -- Сжимает строку
- gzdeflate -- Сжимает строку
- gzencode -- Сжимает строку в формате gzip
- gzeof -- Проверяет, находится ли текущая позиция в конце gz-файла
- gzfile -- Считывает весь gz-файл в массив
- gzgetc -- Возвращает символ из gz-файла
- gzgets -- Возвращает строку из gz-файла
- gzgetss --
Возвращает строку из gz-файла с удалёнными HTML-тегами
- gzinflate -- Распаковывает строку
- gzopen -- Открывает gz-файл
- gzpassthru --
Выводит все оставшиеся данные из указателя gz-файла.
- gzputs -- Псевдоним gzwrite()
- gzread -- Бинарное чтение gz-файла
- gzrewind -- Перемещает индикатор позиции в gz-файле в начало
- gzseek -- Перемещает индикатор позиции в gz-файле
- gztell -- Возвращает текущую позицию чтения/записи в gz-файле
- gzuncompress -- Распаковывает строку
- gzwrite -- Бинарная запись в gz-файл
- readgzfile -- Выводит содержимое gz-файла
- zlib_get_coding_type -- Возвращает тип кодирования, используемый для сжатия вывода
|