CLXXXII. Zlib Komprimierungsfunktionen
Dieses Modul gibt Ihnen die Möglichkeit, transparent gzip (.gz) -
komprimierte Dateien zu lesen und zu schreiben. Hierfür bietet diese
Erweiterung die Versionen der meisten Dateisystem-Funktionen, die mit
gzip-komprimierten (und unkomprimierten) Dateien, jedoch nicht mit
Sockets funktionieren.
Anmerkung:
Mit Version 4.0.4 wurde ein fopen-wrapper für .gz-Dateien eingeführt,
so dass Sie die spezielle zlib:-URL verwenden
können, um auf komprimierte Dateien transparent über die
f*()-Dateifunktionen zuzugreifen. Beim Aufruf von
fopen() müssen Sie dazu lediglich vor dem Dateinamen
das Präfix zlib: schreiben. Diese Möglichkeit
erfordert eine C-Laufzeitbibliothek, die die
fopencookie()-Funktion bereitstellt. Nach aktuellem
Stand scheint die GNU libc die einzige Bibliothek zu sein, die dieses
Feature bereitstellt.
In PHP 4.3.0 wurde zlib: in
compress.zlib:// geändert, um Konflikte mit
Dateinamen zu vermeiden die ':' Zeichen enthalten. Die
fopencookie() Funktion wird nicht mehr benötigt. Mehr
Information hierzu finden Sie im Abschnitt über
Abschnitt namens Compression Streams in Anhang M.
Diese Erweiterung nutzt die Funktionen der zlib-Bibliothek von Jean-loup Gailly und
Mark Adler. Sie benötigen zlib >= 1.0.9, um die Funktionen nutzen zu
können.
Die Unterstützung für Zlib ist in PHP nicht standardmäßig aktiviert. Es ist
erforderlich, die Option --with-zlib[=DIR]
beim Kompilieren von PHP anzugeben.
Die Windowsversion von PHP enthält diese
Erweiterung. Um diese Funktionen zu verwenden, müssen Sie keine zusätzlichen
Erweiterungen aktivieren. Anmerkung:
Die integrierte Unterstützung für zlib in der Windowsversion steht ab
PHP 4.3.0 zur Verfügung.
Das Verhalten dieser Funktionen wird
durch Einstellungen in der php.ini beeinflusst.
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.
Tabelle 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. |
For further details and definitions of the
PHP_INI_* constants, see the Anhang G.
Hier eine kurze Erklärung der
Konfigurationsoptionen:
- 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).
Anmerkung:
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.
Diese Erweiterung definiert keine Resource-Typen. Folgende Konstanten werden von dieser
Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder
statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.
Dieses Beispiel öffnet eine temporäre Datei und schreibt einen Test
String in die Datei, dann wird der Inhalt dieser Datei zweimal ausgegeben.
Beispiel 1. Ein kleines Beispiel zu Zlib |
<?php
$filename = tempnam('/tmp', 'zlibtest') . '.gz';
echo "<html>\n<head></head>\n<body>\n<pre>\n";
$s = "Nur ein test, test, test, test, test, test, test, test!\n";
// Temporäre Datei zum Schreiben mit der maximalen Kompressionsstufe öffnen
$zp = gzopen($filename, "w9");
// String in die Datei schreiben
gzwrite($zp, $s);
// Datei schließen
gzclose($zp);
// Datei zum Lesen öffnen
$zp = gzopen($filename, "r");
// 3 Zeichen ausgeben
echo gzread($zp, 3);
// Inhalt der Datei ausgeben und die Datei schließen
gzpassthru($zp);
gzclose($zp);
echo "\n";
// Öffne die Datei und gib den Inhalt zum zweiten Mal aus
if (readgzfile($filename) != strlen($s)) {
echo "Error with zlib functions!";
}
unlink($filename);
echo "</pre>\n</body>\n</html>\n";
?>
|
|
- Inhaltsverzeichnis
- 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 -- Alias von gzwrite()
- 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 compressed string
- gzwrite -- Binary-safe gz-file write
- readgzfile -- Output a gz-file
- zlib_get_coding_type -- Returns the coding type used for output compression
|