PHP Handbuch
Zurück |  | Nach vorne

# CXII. Zlib Komprimierungsfunktionen

Diese Extension nutzt die Funktionen der zlib von Jean-loup Gailly und Mark Adler um transparent gzip (.gz) - komprimierte Dateien lesen und schreiben zu können. Es muss die zlib >= 1.0.9 verwendet werden, um die Funktionen nutzen zu können.

Diese Extension beinhaltet Versionen der meisten Dateisystem-Funktionen, die mit gzip-komprimierten (und nicht komprimierten) Datein, jedoch nicht mit Sockets funktionieren.

> Anmerkung: Mit Version 4.0.4 wurde ein fopen-wrapper für .gz-Dateien eingeführt, so das eine spezielle 'zlib:'-URL verwendet werden kann, um komprimierte Datei transparent über die f*()-Dateifunktionen genutzt werden können.

> In Version 4.3.0 wurde diese spezielle Prefix in zlib:// geändert, um Konflikte mit Dateinamen zu vermeiden die ':' enthalten.

> Dieses Feature erfordert eine C-Laufzeitbibliothek, die die `fopencookie()`-Funktion bereitstellt. Nach aktuellem Stand ist die GNU libc die einzige Bibliothek, die dieses Feature bereitstellt.

# Code-Beispiel

Öffnet eine temporäre Datei und schreibt einen Test-String in die Datei, dann wird der Inhalt dieser Datei zweimal ausgegeben.

Beispiel 1. Zlib Beispiel

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

    // Öffne eine Datei zum Schreibzugriff mit der maximalen Kompressionsstufe
    $zp = gzopen($filename, "w9");

    // Schreibe den String in die Datei
    gzwrite($zp, $s);

    // Schließe die Datei
    gzclose($zp);

    // Öffne die Datei zum Lesezugriff
    $zp = gzopen($filename, "r");

    // Lese 3 Zeichen
    print gzread($zp, 3);

    // Gebe den Inhalt aus, bis die Datei vollständig ausgegeben ist.
    gzpassthru($zp);

    print "\n";

    // Öffne die Datei und gebe den Inhalt zum zweiten Mal aus
    if (readgzfile($filename) != strlen($s)) {
            echo "Fehler in den Zlib-Funktionen!";
    }
    unlink($filename);
    print "</pre>\n</h1></body>\n</html>\n";

    ?>

Zurück | Zum Anfang | Nach vorne
zip_read | Nach oben | gzclose