CXV. Funktionen zur Ausgabesteuerung

Einführung

Mit den Funktionen zur Ausgabesteuerung können Sie die Ausgabe eines Skripts steuern. Dies kann in verschiedenen Situationen ganz nützlich sein, besonders wenn Sie header an den Browser schicken müssen nachdem Ihr Skript bereits etwas ausgegeben hat. Die Ausgabesteuerungsfunktionen gelten nicht für Header, die mit header() oder setcookie() geschickt wurden, sondern nur für Daten ,die mit echo() gesendet wurden oder für Daten zwischen PHP-Codeblöcken.

Anmerkung: Bei Upgrades von PHP 4.1.x (und 4.2.x) auf 4.3.x müssen Sie wegen eines Fehlers in früheren Versionen sicherstellen das implict_flush in Ihrer php.ini auf OFF gesetzt ist, anderenfalls werden Ausgaben auch nach Aufruf von ob_start() noch an den Browser weitergegeben.

Anforderungen

Diese Erweiterung benötigt keine externen Bibliotheken.

Installation

Für diese Funktionen ist keine Installation erforderlich, diese gehören zum Grundbestand von PHP.

Laufzeit Konfiguration

Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.

Tabelle 1. Output Control Konfigurationsoptionen

NameDefaultÄnderbarKommentar
output_buffering"0"PHP_INI_PERDIR 
output_handlerNULLPHP_INI_PERDIRVerfügbar 4.0.4.
implicit_flush"0"PHP_INI_ALLPHP_INI_PERDIR in PHP <= 4.2.3.
Weitere Details und die Definitionen der PHP_INI_*-Konstanten finden Sie im Anhang H.

Hier eine kurze Erklärung der Konfigurationsoptionen:

output_buffering boolean/integer

Sie können Output Buffering für alle Scripte aktivieren indem Sie diesen Wert auf 'On' setzen. Wenn Sie die Größe des Buffers auf limitieren wollen so können Sie die maximale Größe in Bytes an Stelle von 'On' angeben (z.B. output_buffering=4096). Ab PHP 4.3.5 ist dieser Wert für den PHP CLI Kommandozeileninterpreter grundsätzlich 'Off'.

output_handler string

Sie können die Ausgaben ihres Scriptes an eine Funktion weiterleiten. Wenn sie z.B. mb_output_handler() als output_handler setzen so wird das Character Encoding transparent in das spezifizierte Encoding umgewandelt. Das Setzen einer output_handler Funktion aktiviert das Output Buffering automatisch.

Anmerkung: Sie können mb_output_handler() nicht gleichzeitig mit ob_iconv_handler() und ob_gzhandler() nicht gleichzeitig mit zlib.output_compression. benutzen.

Anmerkung: Es können nur eingebaute PHP-Funktionen angegeben werden, benutzerdefinierte Funktionen können mit Hilfe der ob_start() Funktion genutzt werden.

implicit_flush boolean

Diese Option ist standardmäßig deaktiviert. Wenn Sie implicit_flush aktivieren so wird PHP angewiesen nach jedem Output-Block automatisch den Output Layer zu leeren. Dies ist äquivalent zu flush() Aufrufen nach jedem echo() oder print() Aufruf und nach jedem HTML-Block.

In Webanwendungen hat diese Option massive Performanceauswirkungen und sollte wenn überhaupt dann nur zu Debuggingzwecken aktiviert werden. Im PHP CLI Kommandozeileninterpreter dagegen ist diese Option standardmäßig aktiviert.

Siehe auch ob_implicit_flush().

Resource Typen

Diese Erweiterung definiert keine Resource-Typen.

Vordefinierte Konstanten

Diese Erweiterung definiert keine Konstanten.

Beispiele

Beispiel 1. Beispiel Ausgabesteuerung

<?php

ob_start
();
echo
"Hello\n";

setcookie ("cookiename", "cookiedata");

ob_end_flush();

?>

Im obigen Beispiel wird die Ausgabe der echo() solange im Ausgabepuffer zwischengespeichert, bis die Funktion ob_end_flush() aufgeufen wird. In der Zwischenzeit speichert der Aufruf von setcookie() erfolgreich einen Cookie, ohne einen Fehler zu erzeugen. (Normalerweise können Sie keine header an den Browser mehr schicken, wenn schon Daten ausgegeben wurden.)

Inhaltsverzeichnis
flush --  Leert (sendet) den Ausgabepuffer
ob_clean --  Löscht den Ausgabepuffer
ob_end_clean --  Löscht den Ausgabe-Puffer und deaktiviert die Ausgabe-Pufferung
ob_end_flush --  Leert (schickt/sendet) den Ausgabe-Puffer und deaktiviert die Ausgabe-Pufferung
ob_flush --  Leert (sendet) den Ausgabepuffer
ob_get_clean --  Get current buffer contents and delete current output buffer
ob_get_contents --  Gibt den Inhalt des Ausgabe-Puffers zurück
ob_get_flush --  Flush the output buffer, return it as a string and turn off output buffering
ob_get_length --  Return the length of the output buffer
ob_get_level --  Anzahl der aktiven Ausgabepuffer
ob_get_status --  Get status of output buffers
ob_gzhandler --  ob_start callback function to gzip output buffer
ob_implicit_flush --  Schaltet die implizite Ausgabe ein bzw. aus
ob_list_handlers --  List all output handlers in use
ob_start -- Ausgabepufferung aktivieren
output_add_rewrite_var --  Setzt URL Revriter Variablen
output_reset_rewrite_vars --  Reset URL rewriter values