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

Prinzipien und Anwendungen der Ausgabepufferung in PHP

藏色散人
藏色散人nach vorne
2019-10-22 13:43:071984Durchsuche

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen