PHP4.0 bietet eine Sammlung von Ausgabepufferfunktionen. Durch die Unterstützung der Ausgabepufferung können Sie Funktionen schreiben, die Funktionen um komprimierte Puffer wickeln. Durch die Unterstützung der Ausgabepufferung in PHP4 können HTML-Header-Informationen gespeichert werden, unabhängig davon, ob der HTML-Text ausgegeben wird. Aber in PHP werden Header-Informationen ((header(), Inhaltstyp und Cookies) nicht gepuffert.
Bei der Verwendung von PHP ist es unvermeidlich, Header und zu verwenden
setcookie zwei Funktionen, diese beiden Funktionen senden eine Datei-Header-Information an den Browser, aber wenn vor der Verwendung dieser beiden Funktionen eine Ausgabe erfolgt (einschließlich leerer Ausgaben wie Leerzeichen, Wagenrückläufe und Zeilenvorschübe), wird ein Fehler angezeigt prompted , die Eingabeaufforderungsinformationen lauten wie folgt: „Header war fertig zum Senden“! . Zu PHP 4.0 wurden mehrere Funktionen zur Puffersteuerung hinzugefügt. Die Verwendung dieser Funktionen kann uns bei der Lösung vieler Probleme helfen.
Funktionsname Funktionsformat Funktionsbeschreibung
Flush Flush() gibt den Inhalt des Puffers aus und löscht den Puffer. Diese Funktion wird häufig verwendet und ist sehr effizient.
ob_start void ob_start(void) Öffnet den Ausgabepuffer. Wenn der Puffer aktiv ist, werden alle Nicht-Datei-Header-Informationen vom PHP-Programm nicht gesendet, sondern im internen Puffer gespeichert. Um den Inhalt des Puffers auszugeben, können Sie ob_end_flush() oder ob_end_clean() verwenden, um den Inhalt des Puffers auszugeben.
ob_get_contents string ob_get_contents(void) Gibt den Inhalt des internen Puffers zurück. Diese Funktion gibt den Inhalt des aktuellen Puffers zurück oder FALSE, wenn der Ausgabepuffer nicht aktiv ist.
ob_get_length int ob_get_length(void) Gibt die Länge des internen Puffers zurück. Diese Funktion gibt die Länge des aktuellen Puffers zurück; wie ob_get_contents, wenn der Ausgabepuffer nicht aktiv ist. Gibt FALSE zurück.
ob_end_flush void ob_end_flush(void) Sendet den Inhalt des internen Puffers an den Browser und schließt den Ausgabepuffer. Diese Funktion sendet den Inhalt des Ausgabepuffers (falls vorhanden).
ob_end_clean void ob_end_clean(void) Löschen Sie den Inhalt des internen Puffers und schließen Sie den internen Puffer. Diese Funktion gibt nicht den Inhalt des internen Puffers aus!
ob_implicit_flush void ob_implicit_flush ([int flag]) Schaltet den absoluten Flush ein oder aus. Jeder, der Perl verwendet hat, kennt die Bedeutung von $|=x. Diese Zeichenfolge kann den Puffer öffnen/schließen, und die Funktion ob_implicit_flush ist dieselbe Standardmäßig wird der Pufferbereich geschlossen und die absolute Ausgabe aktiviert.
2. Beispielanalyse:
1. Verwenden Sie Pufferkontrollfunktionen, um Fehler beim Senden von Informationen im Dateiheader zu verhindern.
<? //PHP-Eingabeaufforderung
ob_start(); //Öffne den Puffer
echo „Willkommen /n“; //Ausgabe
header("location:next.php"); //Den Browser auf next.php umleiten
?>
Wenn ob_start entfernt wird, gibt PHP in Zeile 4 der Datei die Fehlermeldung „Header had all ready send by“ aus. Wenn jedoch ob_start hinzugefügt wird, wird kein Fehler angezeigt Puffer wird geöffnet, der Fehler nach dem Echo Die Zeichen werden nicht an den Browser ausgegeben, sondern bleiben im Puffer des Servers. Sie werden erst ausgegeben, wenn Sie Flush oder ob_end_flush verwenden, sodass der Dateiheader keinen Fehler aufweist ausgegeben!
2. Speichern Sie die Ausgabe (dies ist eine sehr klassische Verwendung).
Angenommen, Sie möchten die Bildschirmausgabeinformationen des Clients kennen, z. B. die Ausgabeergebnisse von Funktionen usw., und diese Ausgabeinformationen unterscheiden sich je nach Client. Wir können die Funktion <?phpinfo(); ?> verwenden, um die Einstellungsinformationen des Servers abzurufen, aber was ist, wenn wir die Ausgabe der Funktion phpinfo() speichern möchten? Bevor es keine Puffersteuerung gab, kann man sagen, dass es überhaupt keine Möglichkeit gab, aber mit der Puffersteuerung können wir das Problem leicht lösen.
<?
ob_start(); //Öffne den Puffer
phpinfo(); //PHPInfo-Funktion verwenden
$info=ob_get_contents(); //Den Inhalt des Puffers abrufen und ihn $info zuweisen
$file=fopen('phpinfo.txt','w'); //Öffne die Datei phpinfo.txt
fwrite($file,$info); //Informationen in phpinfo.txt schreiben
fclose($file); //Schließe die Datei phpinfo.txt
?>
Mit der oben genannten Methode können Sie die PHPInfo-Informationen verschiedener Benutzer speichern. Dies war zuvor möglicherweise nicht möglich. In ähnlicher Weise kann die Puffermethode zum Speichern von Aufgaben verwendet werden, die mit herkömmlichen Methoden nur schwer zu erledigen sind. Dabei handelt es sich tatsächlich um eine Methode zum Konvertieren einiger „Prozesse“ in „Funktionen“.