Start · Sprachen · PHP · Referenz · ob_get_status

ob_get_status

Funktion

Gibt Statusinformationen über den aktuellen oder alle aktiven Ausgabepuffer zurück.

seit PHP 4.0.0 Kategorie: io

Signatur

ob_get_status(bool $full_status = false): array

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

Typ
array
Beschreibung
Ein assoziatives Array mit Statusinformationen des aktuellen Puffers (wenn $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();
Puffername: default output handler Verschachtelungstiefe: 1 Typ: intern

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();
}
Puffer #0: Name=default output handler, Level=1 Puffer #1: Name=ob_gzhandler, Level=2

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