Функции сжатия 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.

Таблица. Конфигурационные параметры, касающиеся 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 был собран с поддержкой этого расширения или же в том случае, если данное расширение подгружается во время выполнения.

FORCE_GZIP (integer)
FORCE_DEFLATE (integer)

Примеры

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

Пример. Небольшой пример использования Zlib

?php

$filename
= tempnam('/tmp', 'zlibtest') . '.gz';
echo
"\n\n\n
\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
"
\n\n\n"
;

?>
Кол-во строк: 
Заголовок Дата изменения Хиты
zlib_get_coding_type 10 Январь 2011 176
readgzfile 10 Январь 2011 194
gzwrite 10 Январь 2011 196
gzuncompress 10 Январь 2011 231
gztell 10 Январь 2011 220
gzseek 10 Январь 2011 173
gzrewind 10 Январь 2011 168
gzread 10 Январь 2011 220
gzputs 10 Январь 2011 166
gzpassthru 10 Январь 2011 131
gzopen 10 Январь 2011 124
gzinflate 10 Январь 2011 212
gzgetss 10 Январь 2011 133
gzgets 10 Январь 2011 139
gzgetc 10 Январь 2011 132
gzfile 10 Январь 2011 125
gzeof 10 Январь 2011 152
gzencode 10 Январь 2011 130
gzdeflate 10 Январь 2011 219
gzcompress 10 Январь 2011 146
gzclose 10 Январь 2011 252
Copyright © 2004 - 2012 Oftob.com
Professional Joomla Templates - 888 Poker Review
Mail.Ru