|
CLXIV. Zlib Compression Functions
This module enables you to transparently read and write
gzip (.gz) compressed files, through versions of most of
the filesystem functions
which work with gzip-compressed files (and uncompressed files,
too, but not with sockets).
注:
Version 4.0.4 introduced a fopen-wrapper for .gz-files, so that
you can use a special 'zlib:' URL to access compressed files
transparently using the normal f*() file access functions if you
prepend the filename or path with a 'zlib:' prefix when calling
fopen().
In version 4.3.0, this special prefix has been changed to 'zlib://'
to prevent ambiguities with filenames containing ':'.
This feature requires a C runtime library that provides the
fopencookie() function. To my current
knowledge the GNU libc is the only library that provides
this feature.
This module uses the functions of zlib
by Jean-loup Gailly and Mark Adler. You have to use a zlib
version >= 1.0.9 with this module.
Zlib support in PHP is not enabled by default. You will need to
configure PHP --with-zlib[=DIR]
PHP 的 Windows
版本已经内置该扩展模块的支持。无需加载任何附加扩展库即可使用这些函数。 注:
Builtin support for zlib on Windows is available with PHP 4.3.0.
这些函数的行为受 php.ini 的影响。
The zlib extension offers the option to transparently compress
your pages on-the-fly, if the requesting browser supports
this. Therefore there are three options in the configuration file php.ini.
表格 1. Zlib Configuration Options Name | Default | Changeable | Changelog |
---|
zlib.output_compression | "0" | PHP_INI_ALL | Available since PHP 4.0.5. | zlib.output_compression_level | "-1" | PHP_INI_ALL | Available since PHP 4.3.0. | zlib.output_handler | "" | PHP_INI_ALL | Available since PHP 4.3.0. |
有关 PHP_INI_* 常量进一步的细节与定义参见 附录 G。
以下是配置选项的简要解释。
- zlib.output_compression
boolean/integer
Whether to transparently compress pages. If this option is set
to "On" in php.ini or the Apache configuration, pages are
compressed if the browser sends an "Accept-Encoding: gzip" or
"deflate" header. "Content-Encoding: gzip" (respectively
"deflate") and "Vary: Accept-Encoding" headers are added to
the output.
In runtime, it can be set only before sending any output.
This option also accepts integer values instead of boolean
"On"/"Off", using this you can set the output buffer size
(default is 4KB).
注:
output_handler must be
empty if this is set 'On' ! Instead you must use zlib.output_handler.
- zlib.output_compression_level
integer
Compression level used for transparent output compression.
- zlib.output_handler
string
You cannot specify additional output handlers if zlib.output_compression
is activated here. This setting does the same as
output_handler but in a different order.
以下常量由本扩展模块定义,因此只有在本扩展模块被编译到
PHP 中,或者在运行时被动态加载后才有效。
This example opens a temporary file and writes a test string
to it, then it prints out the content of this file twice.
例子 1. Small Zlib Example
<?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";
// open file for writing with maximum compression $zp = gzopen($filename, "w9");
// write string to file gzwrite($zp, $s);
// close file gzclose($zp);
// open file for reading $zp = gzopen($filename, "r");
// read 3 char echo gzread($zp, 3);
// output until end of the file and close it. gzpassthru($zp); gzclose($zp);
echo "\n";
// open file and print content (the 2nd time). if (readgzfile($filename) != strlen($s)) { echo "Error with zlib functions!"; } unlink($filename); echo "</pre>\n</body>\n</html>\n";
?>
|
|
| |