Signatur
Beschreibung
ob_get_status() liefert ein assoziatives Array mit Metadaten über den aktuellen Ausgabepuffer. Wird $full_status auf true gesetzt, enthält das Ergebnis stattdessen ein numerisch indiziertes Array mit Statusinformationen über alle verschachtelten Ausgabepuffer auf dem Stack.
Typische Felder im zurückgegebenen Array sind: level (Verschachtelungstiefe), type (0 = intern, 1 = benutzerdefiniert), status (Pufferzustand als Integer-Flag), name (Name des aktiven Ausgabehandlers, z. B. ob_gzhandler) sowie del (ob der Puffer nach dem Leeren gelöscht wird).
Die Funktion ist besonders nützlich beim Debuggen komplexer Ausgabepuffer-Architekturen, etwa wenn mehrere verschachtelte ob_start()-Aufrufe eingesetzt werden oder wenn man prüfen möchte, ob und mit welchem Handler ein Puffer aktiv ist.
Im Gegensatz zu ob_get_level(), das nur die Tiefe liefert, gibt ob_get_status() detaillierte Informationen zurück und ermöglicht so eine präzisere Diagnose des aktuellen Puffer-Zustands.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $full_status | bool | false | Wenn true, werden Statusinformationen für alle aktiven Ausgabepuffer auf dem Stack als numerisch indiziertes Array zurückgegeben. Bei false (Standard) werden nur die Daten des innersten (aktuellen) Puffers zurückgegeben. |
Rückgabewert
$full_status = false) oder ein numerisch indiziertes Array von assoziativen Arrays für alle Puffer (wenn $full_status = true). Ist kein Ausgabepuffer aktiv, wird ein leeres Array zurückgegeben.Beispiele
Statusinfos des aktuellen Ausgabepuffers abrufen
<?php
ob_start();
$status = ob_get_status();
echo 'Puffername: ' . $status['name'] . PHP_EOL;
echo 'Verschachtelungstiefe: ' . $status['level'] . PHP_EOL;
echo 'Typ: ' . ($status['type'] === 1 ? 'benutzerdefiniert' : 'intern') . PHP_EOL;
ob_end_clean();
Alle verschachtelten Ausgabepuffer auflisten
<?php
ob_start(); // Puffer 1 (Standard)
ob_start('ob_gzhandler'); // Puffer 2 (gzip-Handler)
$allStatus = ob_get_status(true);
foreach ($allStatus as $index => $bufferInfo) {
echo "Puffer #{$index}: Name={$bufferInfo['name']}, Level={$bufferInfo['level']}" . PHP_EOL;
}
// Alle Puffer schließen
while (ob_get_level() > 0) {
ob_end_clean();
}
// Wichtig · Fallstricke
Hinweis zu ob_gzhandler: Wenn ob_gzhandler als Callback registriert ist, kann es je nach Client-Unterstützung passieren, dass der Handler die Ausgabe nicht komprimiert – ob_get_status() zeigt dennoch den Namen des Handlers an, nicht ob die Komprimierung tatsächlich stattfand.
Das Feld status im zurückgegebenen Array ist ein Integer-Bitmask und wird in der PHP-Dokumentation nicht vollständig beschrieben. Für verlässliche Zustandsabfragen empfiehlt es sich, zusätzlich ob_get_level() zu verwenden, um die Verschachtelungstiefe sicher zu prüfen.
Bei $full_status = false ohne aktiven Puffer wird ein leeres Array zurückgegeben – prüfe daher mit ob_get_level() > 0, bevor du auf Array-Einträge zugreifst, um Undefined index-Warnungen zu vermeiden.