|
|
CXI. Zlib Compression FunctionsIntroduzione
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).
Nota:
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.
Requisiti
This module uses the functions of
by Jean-loup Gailly and Mark Adler. You have to use a zlib
version >= 1.0.9 with this module.
Configurazione Runtime
The zlib extension offers the option to transparently compress
your pages on-the-fly, if the requesting browser supports
this. Therefore there are two options in the configuration file php.ini.
Tabella 1. Zlib Configuration Options Name | Default | Changeable |
---|
zlib.output_compression | "0" | PHP_INI_ALL | zlib.output_compression_level | "-1" | PHP_INI_ALL |
For further details and definition of the PHP_INI_* constants see
ini_set().
Here is a short explanation of the configuration directives.
- 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.
You can use ini_set() to disable this in
your script if the headers aren't already sent. If you output
a "Content-Type: image/" header the compression is disabled,
too (in order to circumvent a Netscape bug). You can reenable
it, if you add "ini_set('zlib.output_compression', 'On')"
after the header call which added the image content-type.
This option also accepts integer values instead of boolean
"On"/"Off", using this you can set the output buffer size.
- zlib.output_compression_level
integer
Compression level used for transparent output compression.
Resource TypeQuesta estensione non definisce alcun tipo di risorsa. Costanti Predefinite
Queste costanti sono definite da questa estensione e
sono disponibili solo se l'estensione � stata compilata
nel PHP o se � stata caricata dinamicamente a runtime.
Esempi
This example opens a temporary file and writes a test string
to it, then it prints out the content of this file twice.
Esempio 1. Small Zlib Example <?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";
// 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
print gzread($zp, 3);
// output until end of the file and close it.
gzpassthru($zp);
print "\n";
// open file and print content (the 2nd time).
if (readgzfile($filename) != strlen($s)) {
echo "Error with zlib functions!";
}
unlink($filename);
print "</pre>\n</h1></body>\n</html>\n";
?> |
|
- Sommario
- gzclose -- Close an open gz-file pointer
- gzcompress -- Compress a string
- gzdeflate -- Deflate a string
- gzencode -- Create a gzip compressed string
- gzeof -- Test for end-of-file on a gz-file pointer
- gzfile -- Read entire gz-file into an array
- gzgetc -- Get character from gz-file pointer
- gzgets -- Get line from file pointer
- gzgetss --
Get line from gz-file pointer and strip HTML tags
- gzinflate -- Inflate a deflated string
- gzopen -- Open gz-file
- gzpassthru --
Output all remaining data on a gz-file pointer
- gzputs -- Write to a gz-file pointer
- gzread -- Binary-safe gz-file read
- gzrewind -- Rewind the position of a gz-file pointer
- gzseek -- Seek on a gz-file pointer
- gztell -- Tell gz-file pointer read/write position
- gzuncompress -- Uncompress a deflated string
- gzwrite -- Binary-safe gz-file write
- readgzfile -- Output a gz-file
User Contributed Notes Zlib Compression Functions |
|
[email protected]
19-Apr-2001 01:02 |
|
An alternate way to handle gzip compression is to let the mod_gzip module
of apache handle it. This seems to contradict the tutorial on
phpbuilder.com saying that it won't compress php (or any dynamic) output,
but mod_gzip as of version 1.3.17.1a works well for me.
Here is
an example of an httpd.conf setup:
<IfModule
mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk
Yes
mod_gzip_minimum_file_size
300
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size
100000
mod_gzip_keep_workfiles No
mod_gzip_temp_dir
/tmp
mod_gzip_item_include file
\.html$
mod_gzip_item_include file
\.jsp$
mod_gzip_item_include file
\.php$
mod_gzip_item_include file
\.pl$
mod_gzip_item_include mime
^text/.*
mod_gzip_item_include mime
^application/x-httpd-php
mod_gzip_item_include mime
^httpd/unix-directory$
mod_gzip_item_include handler
^perl-script$
mod_gzip_item_include handler
^server-status$
mod_gzip_item_include handler
^server-info$
mod_gzip_item_exclude mime
^image/.*
</IfModule>
This will automatically compress
all output of your files with the .php extention or the x-httpd-php mime
type. Be sure to have dechunk set to Yes.
|
|
|
| |