Start · Sprachen · PHP · Referenz · zlib_get_coding_type

zlib_get_coding_type

Funktion

Gibt die aktuell für die Ausgabekomprimierung (Output Buffering) genutzte Kodierungsmethode zurück.

seit PHP 4.3.2 Kategorie: io

Signatur

zlib_get_coding_type(): string|false

Beschreibung

zlib_get_coding_type() ermittelt, welche Komprimierungsmethode PHP aktuell für die transparente Ausgabekomprimierung verwendet. Diese Ausgabekomprimierung wird durch die INI-Direktive zlib.output_compression gesteuert und komprimiert den an den Browser gesendeten HTTP-Antwort-Body automatisch.

Mögliche Rückgabewerte sind 'gzip', wenn GZIP-Kodierung verwendet wird, oder 'deflate', wenn Deflate-Kodierung zum Einsatz kommt. Ist keine Ausgabekomprimierung aktiv, gibt die Funktion false zurück.

Die Funktion ist hilfreich, wenn man im laufenden Skript prüfen möchte, ob und wie die Ausgabe komprimiert wird – beispielsweise um den korrekten Content-Encoding-Header manuell zu setzen oder um Doppelkomprimierung zu verhindern, wenn man zusätzlich eigene Komprimierung vornehmen möchte.

Voraussetzung für den Einsatz dieser Funktion ist, dass PHP mit zlib-Unterstützung kompiliert wurde (Extension zlib).

Rückgabewert

Typ
string|false
Beschreibung
Gibt 'gzip' oder 'deflate' zurück, je nach aktiver Ausgabekomprimierungsmethode. Ist keine Ausgabekomprimierung aktiv, wird false zurückgegeben.

Beispiele

Prüfen, ob Ausgabekomprimierung aktiv ist

<?php
$coding = zlib_get_coding_type();

if ($coding === false) {
    echo "Keine Ausgabekomprimierung aktiv.";
} else {
    echo "Aktive Komprimierungsmethode: " . $coding;
}
Aktive Komprimierungsmethode: gzip

Doppelkomprimierung vermeiden

<?php
// Eigene gzip-Komprimierung nur dann durchführen,
// wenn PHP sie nicht bereits automatisch übernimmt.
$coding = zlib_get_coding_type();

if ($coding === false) {
    // Keine automatische Komprimierung – manuell komprimieren
    $content = file_get_contents('data.txt');
    $compressed = gzencode($content, 6);
    header('Content-Encoding: gzip');
    header('Content-Length: ' . strlen($compressed));
    echo $compressed;
} else {
    // PHP komprimiert bereits automatisch
    echo file_get_contents('data.txt');
}

// Wichtig · Fallstricke

Hinweis: Die Ausgabekomprimierung wird nur aktiviert, wenn der Client im HTTP-Request-Header Accept-Encoding: gzip oder Accept-Encoding: deflate sendet. Fehlt dieser Header, liefert zlib_get_coding_type() auch dann false, wenn zlib.output_compression in der php.ini auf On gesetzt ist.

Die Funktion gibt nur dann einen sinnvollen Wert zurück, wenn sie nach dem Start des Output-Buffers aufgerufen wird. Ein Aufruf vor dem Beginn der Ausgabe (z. B. ganz am Anfang des Skripts, bevor irgendeine Ausgabe stattgefunden hat) kann false liefern, selbst wenn Komprimierung konfiguriert ist.