PHP ob_get_flush() Funktion: Alles, was Sie wissen müssen
Die PHP-Funktion ob_get_flush() liest den Inhalt des Ausgabepuffers als String aus und sendet ihn gleichzeitig weiter. Hier erfahren Sie, wie sie funktioniert.
Als PHP-Entwickler müssen Sie möglicherweise den Inhalt des Ausgabepuffers abrufen und ihn gleichzeitig leeren. Die Funktion ob_get_flush() ist eine eingebaute PHP-Funktion, die beides in einem einzigen Aufruf erledigt: Sie gibt den aktuellen Pufferinhalt als String zurück und sendet ihn an die nächste Ausgabeebene. Dieser Artikel erklärt, wie sie funktioniert, was sie zurückgibt und wann man sie anstelle der anderen Ausgabesteuerungsfunktionen verwenden sollte.
Was ist die Funktion ob_get_flush()?
Output Buffering ermöglicht es PHP, alles, was Sie mit echo oder print ausgeben, im Speicher zu sammeln, anstatt es direkt an den Browser zu senden. Sie starten einen Puffer mit ob_start(), schreiben wie gewohnt hinein und entscheiden dann, was mit der aufgezeichneten Ausgabe geschehen soll.
ob_get_flush() erledigt drei Dinge in einem Schritt:
- Liest den Inhalt des aktiven (obersten) Ausgabepuffers und gibt ihn als String zurück.
- Leert diesen Inhalt — sendet ihn an die nächste Pufferebene oder an den Browser, wenn keine weitere Ebene existiert.
- Schließt diese Pufferebene (eine Verschachtelungsebene wird entfernt).
Damit ist sie eine praktische Kombination aus ob_get_contents() (lesen) und ob_end_flush() (senden + schließen).
Syntax
ob_get_flush(): string|falseParameter
ob_get_flush() erwartet keine Parameter.
Rückgabewert
Die Funktion gibt den Inhalt des obersten Ausgabepuffers als String zurück. Wenn Output Buffering nicht aktiv ist (kein Puffer zum Leeren vorhanden), gibt sie false zurück und löst einen Hinweis aus. Starten Sie daher immer zuerst einen Puffer mit ob_start(), bevor Sie die Funktion aufrufen.
Verwendung der Funktion ob_get_flush()
Das Muster lautet: Einen Puffer starten, hineinschreiben und anschließend ob_get_flush() aufrufen, um ihn zu erfassen und freizugeben.
<?php
ob_start();
echo "This will be buffered";
// Capture the buffer, flush it to the browser, and close the level.
$output = ob_get_flush();
echo "\nCaptured copy: " . $output;Ausgabe:
This will be buffered
Captured copy: This will be bufferedHier wird "This will be buffered" im Puffer gesammelt und nicht sofort ausgegeben. ob_get_flush() gibt diesen Text zurück (sodass $output ihn nun enthält) und sendet ihn gleichzeitig an den Browser — deshalb erscheint der Text zweimal: einmal durch das Leeren des Puffers und einmal durch das abschließende echo.
Wenn Buffering beim Aufruf nicht aktiv ist, erhalten Sie false zurück:
<?php
$output = ob_get_flush(); // No ob_start() was called
var_dump($output); // bool(false)ob_get_flush() im Vergleich zu verwandten Funktionen
| Funktion | Gibt Inhalt zurück? | Sendet an Ausgabe? | Schließt den Puffer? |
|---|---|---|---|
ob_get_flush() | Ja (string) | Ja | Ja |
ob_end_flush() | Nein (bool) | Ja | Ja |
ob_get_clean() | Ja (string) | Nein (verworfen) | Ja |
ob_get_contents() | Ja (string) | Nein | Nein |
Verwenden Sie ob_get_flush(), wenn Sie sowohl eine Kopie der gepufferten Ausgabe behalten möchten (zum Protokollieren, Prüfen oder Verändern) als auch diese an den Browser senden wollen. Wenn Sie sie nur senden möchten, nutzen Sie ob_end_flush(); wenn Sie sie erfassen möchten ohne sie zu senden, nutzen Sie ob_get_clean().
Fazit
Die Funktion ob_get_flush() liest den aktiven Ausgabepuffer als String aus und leert sowie schließt ihn in einem einzigen Aufruf. Wenn Sie die leere Parameterliste, den string|false-Rückgabewert und das Verhalten beim Schließen des Puffers verstehen, können Sie Ausgabeströme präziser steuern. Um tiefer einzutauchen, erkunden Sie ob_start() zum Öffnen von Puffern, ob_get_level() zum Überprüfen der Verschachtelungstiefe und ob_flush() zum Leeren ohne Schließen.