Signatur
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
'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;
}
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.