Heim > Backend-Entwicklung > PHP-Tutorial > Prinzipien und Anwendungen der Ausgabepufferung in PHP

Prinzipien und Anwendungen der Ausgabepufferung in PHP

藏色散人
Freigeben: 2023-04-07 17:36:01
nach vorne
2082 Leute haben es durchsucht

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);
Nach dem Login kopieren

ob_get_contents()

//获取当前ob缓存中的内容
ob_get_contents()
Nach dem Login kopieren

ob_get_clean()

//获取当前ob缓存中的内容,并且清空当前的ob缓存
ob_get_clean()
Nach dem Login kopieren

ob_flush()

//将ob缓存中的内容,刷到程序缓存中,但并没有关闭ob缓存
ob_flush()
Nach dem Login kopieren

ob_end_flush()

//关闭ob缓存,并将数据刷回到程序缓存中
ob_end_flush()
Nach dem Login kopieren

ob_clean()

//将ob缓存中的内容清空
ob_clean()
Nach dem Login kopieren

ob_end_clean()

//将ob缓存中的数据清空,并且关闭ob缓存
ob_end_clean()
Nach dem Login kopieren

Hinweis ob_start($callback) Rückruf

<?php
ob_start("callback_func");
function callback_func($str){
    return "callback".$str;
}
echo "123";//输出:callback123
Nach dem Login kopieren

Anwendungsszenario

Fehlerbericht vor dem Senden von header()

Fehlercode

<?php
echo "before_header";
header("Content-type:text/html;charset=utf-8");
echo "after_header";
Nach dem Login kopieren

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
Nach dem Login kopieren

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";
Nach dem Login kopieren

Ausgabe

before_header
after_header
Nach dem Login kopieren

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!

Verwandte Etiketten:
php
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
PHP-Datenerfassung?
Aus 1970-01-01 08:00:00
0
0
0
PHP-Erweiterung intl
Aus 1970-01-01 08:00:00
0
0
0
Wie man PHP gut lernt
Aus 1970-01-01 08:00:00
0
0
0
Mehrere PHP-Versionen
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage