PHP Handbuch
Zurück |  | Weiter

# CLXXXVIII. Zlib Komprimierungsfunktionen

# Einführung

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 N.

# Anforderungen

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.

# Installation

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.

# Laufzeit Konfiguration

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.

Weitere Details und die Definitionen der PHP_INI_*-Konstanten finden Sie im Anhang H.

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.

# Resource Typen

Diese Erweiterung definiert keine Resource-Typen.

# Vordefinierte Konstanten

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.

`FORCE_GZIP` (integer)

`FORCE_DEFLATE` (integer)

# Beispiele

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";
?>`

Zurück | Zum Anfang | Weiter
ZipArchive::unchangeName | Nach oben | gzclose