Signatur
Beschreibung
ob_get_flush() kombiniert die Aktionen von ob_get_contents(), ob_end_flush() in einem einzigen Aufruf: Der Inhalt des aktiven Ausgabepuffers wird zuerst als String zurückgegeben, anschließend an den übergeordneten Puffer (oder direkt an den Browser) gesendet und der Puffer wird abschließend geschlossen.
Diese Funktion ist besonders nützlich, wenn man den Pufferinhalt sowohl verarbeiten (z. B. für Logging oder Nachbearbeitung) als auch tatsächlich ausgeben möchte, ohne ihn zweimal zu erfassen. Sie eignet sich gut in Szenarien, in denen Ausgabe-Puffer für Template-Rendering, Caching oder Content-Manipulation eingesetzt werden.
Wichtig: Die Funktion schließt den Puffer vollständig. Falls mehrere verschachtelte Puffer aktiv sind, wird nur der innerste (aktuelle) Puffer geleert und geschlossen. Danach ist der nächste äußere Puffer wieder aktiv.
Im Fehlerfall – wenn kein aktiver Ausgabepuffer vorhanden ist – gibt die Funktion false zurück und erzeugt eine PHP-Notice.
Rückgabewert
string zurück. Gibt false zurück, wenn kein aktiver Ausgabepuffer existiert.Beispiele
Pufferinhalt erfassen, verarbeiten und ausgeben
<?php
ob_start();
echo "<p>Hallo, Welt!</p>\n";
echo "<p>Noch eine Zeile.</p>\n";
// Inhalt holen, ausgeben und Puffer schließen
$inhalt = ob_get_flush();
// $inhalt enthält jetzt den gesamten gepufferten Text
file_put_contents('/tmp/ausgabe_log.txt', $inhalt);
Verschachtelte Puffer: nur den innersten leeren
<?php
ob_start(); // Äußerer Puffer
echo "Äußerer Inhalt\n";
ob_start(); // Innerer Puffer
echo "Innerer Inhalt\n";
// Inneren Puffer leeren, ausgeben und schließen
$innererInhalt = ob_get_flush();
echo "(Innerer Puffer hatte: " . strlen($innererInhalt) . " Zeichen)\n";
// Äußeren Puffer ebenfalls leeren
$äußererInhalt = ob_get_flush();
echo "[Ende]\n";
// Wichtig · Fallstricke
Kein aktiver Puffer: Wenn ob_get_flush() aufgerufen wird, ohne dass zuvor ob_start() aktiv war, gibt die Funktion false zurück und löst eine E_NOTICE aus. Prüfe vor dem Aufruf ggf. mit ob_get_level() > 0, ob ein Puffer aktiv ist.
Unterschied zu verwandten Funktionen: ob_end_flush() gibt den Inhalt aus und schließt den Puffer, liefert aber keinen Rückgabewert. ob_get_contents() gibt den Inhalt zurück, ohne ihn zu senden oder den Puffer zu schließen. ob_get_flush() vereint beides.
Header-Ausgabe: Da ob_get_flush() Daten an den Browser sendet, können danach keine HTTP-Header mehr gesendet werden, sofern kein weiterer übergeordneter Puffer aktiv ist.