Heim > Artikel > Backend-Entwicklung > Prinzipien und Anwendungen der Ausgabepufferung in PHP
PHP-Caching-Prozess
Beim Anfordern eines PHP durchläuft es tatsächlich drei Caches:
1 Programm-Cache
2 .ob-Cache
3. Browser-Cache.
Zwei Methoden zum Aktivieren von ob
1. Konfigurieren Sie in php.ini; das ;-Zeichen hier
2 Verwenden Sie ob_start() in der PHP-Seite;
wird über php.ini geöffnet und gilt für alle PHP-Seiten. Das Öffnen mit ob_start() betrifft nur diese Seite
Wissenspunkte des Ob-Cache
Wenn wir im Dienst den Ob-Cache aktivieren, werden zuerst die Echodaten eingegeben. Geben Sie ob ein
Wenn die PHP-Seite bis zum Ende ausgeführt wird, werden die zwischengespeicherten ob-Daten (falls vorhanden) zwangsweise im Programmcache aktualisiert, und dann werden die Daten über Apache in ein http-Antwortpaket gekapselt und an zurückgegeben Browser
Wenn kein ob vorhanden ist, werden alle Daten direkt in den Programmcache gelegt. Die Header-Informationen werden immer im Programmcache abgelegt, unabhängig davon, ob Sie ob aktivieren.
ob-bezogene Funktionen
ob_start($callback)
//在当前页面中开启ob,注意callback ob_start($callback);
ob_get_contents()
//获取当前ob缓存中的内容 ob_get_contents()
ob_get_clean()
//获取当前ob缓存中的内容,并且清空当前的ob缓存 ob_get_clean()
ob_flush()
//将ob缓存中的内容,刷到程序缓存中,但并没有关闭ob缓存 ob_flush()
ob_end_flush()
//关闭ob缓存,并将数据刷回到程序缓存中 ob_end_flush()
ob_clean()
//将ob缓存中的内容清空 ob_clean()
ob_end_clean()
//将ob缓存中的数据清空,并且关闭ob缓存 ob_end_clean()
Hinweis ob_start($callback) Rückruf
<?php ob_start("callback_func"); function callback_func($str){ return "callback".$str; } echo "123";//输出:callback123
Anwendungsszenario
Fehlerbericht vor dem Senden von header()
Fehlercode
<?php echo "before_header"; header("Content-type:text/html;charset=utf-8"); echo "after_header";
Ausgabe:
Warning: Cannot modify header information - headers already sent by (output started at /Users/shuchao/Desktop/test.php:2) in /Users/shuchao/Desktop/test.php on line 3
Lösung
Aktivieren Sie ob, bevor Sie den Header senden. Dann wird der gesamte Echoinhalt an ob gesendet, wodurch der Fehler behoben wird.
<?php ob_start(); echo "before_header\n"; header("Content-type:text/html;charset=utf-8"); echo "after_header\n";
Ausgabe
before_header after_header
Das obige ist der detaillierte Inhalt vonPrinzipien und Anwendungen der Ausgabepufferung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!