Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Caching-Mechanismus

PHP-Caching-Mechanismus

巴扎黑
巴扎黑Original
2016-11-22 16:48:45969Durchsuche

Ich stoße häufig auf dieses Problem, wenn ich PHP-Programme schreibe.

Einschließlich der Verwendung der Header()-Funktion, der Session()-Funktion und der Cookies-Funktion kann es zu Problemen kommen

PHP-Programme Folgendes Fehler wird gemeldet:


Header-Informationen können nicht geändert werden – Header wurden bereits gesendet von (Ausgabe begann um

Um diesen Fehler zu beheben, müssen zwei Probleme verstanden werden

Erstens das http-Protokoll

Der Server kommuniziert mit dem Browser. Die HTML-Datei besteht aus zwei Teilen. Der andere Teil sind die Header-Informationen der HTML-Seite B. das Codierungsformat, in dem die Seite angezeigt wird, die Größe der HTML-Daten, ob gesprungen werden soll, ob zwischengespeichert werden soll usw. Nach der Generierung dürfen diese HTML-Header-Dateiinformationen nicht mehr geändert werden Grund für den oben gemeldeten Fehler:

Zweitens: PHP Der Caching-Mechanismus

Während der Ausführung des PHP-Programms gibt es zwei Teile des Caches Der Programm-Cache, den ich als den Daten-Cache des Programms im Speicher verstehe, ist das von PHP bereitgestellte Cache-Modul. Wenn der PHP-Modul-Cache aktiviert ist, öffnet dieses Modul einen anderen Ort Wenn das Programm Echodaten enthält, werden die Daten in den Cache gestellt, anstatt die HTML-Datei direkt zu generieren, bis die Ausführung des PHP-Programms abgeschlossen ist. Die vom Modul zwischengespeicherten Daten generieren hier auch HTML-Code sind zwei Beispiele:

1. Caching ist nicht aktiviert (dies ist die Standardeinstellung)

Der Fehler „Header-Informationen können nicht geändert werden“ wird angezeigt
<?php
echo "123";
header("Content-type:text/html;charset=utf-8")
echo "456";
?>

2. Schalten Sie den Caching-Mechanismus ein

<?php
ob_start() ; //开启页面缓存
echo "123";
header("Content-type:text/html;charset=utf-8")
echo "456";
?>

In den beiden oben genannten Beispielen ist der Cache-Status beim Echo nicht aktiviert. 123"; ein HTML-Code wurde generiert. Beim Erreichen der dritten Zeile kann die Header-Funktion die Header-Dateiinformationen nicht ändern und meldet einen Fehler. In Beispiel 2 schaltet ob_start(); den Cache ein ( ob ist Output_buffer), wenn echo „123“, die Daten werden in das Cache-Modul geschrieben und dann wird die Funktion header() ausgeführt. Zu diesem Zeitpunkt wird die HTML-Seite nicht generiert und dann wird auch echo „456“ an das Cache-Modul ausgegeben. Bei der Ausführung des Programms werden schließlich die Daten des Cache-Moduls zu einer vollständigen HTML-Seite neu generiert, sodass kein Fehler gemeldet wird.

Zweitens die Cache-Mechanismus-Funktion von PHP und wie man sie aktiviert

Wie oben erwähnt, kann die ob_start()-Funktion das Cache-Modul aktivieren, aber diese Funktion öffnet nur diese Seite. Bei Bedarf können Sie die Datei php.ini ändern, die Option „output_buffering“ finden und sie auf „output_buffering = 4096“ ändern (Ein ist auch in Ordnung).

Der PHP-Caching-Mechanismus hat auch einige Funktionen. Bitte probieren Sie es aus, um den PHP-Caching-Mechanismus besser zu verstehen.

ob_start() startet die Ausgabepufferung und PHP stoppt zu diesem Zeitpunkt Ausgabe, danach wird die Ausgabe in einen internen Puffer übertragen

ob_get_contents() Diese Funktion gibt den Inhalt des internen Puffers zurück. Dies entspricht der Umwandlung dieser Ausgaben in Strings () gibt die Länge des internen Puffers zurück.

ob_end_clean() beendet den Ausgabepuffer und gibt den Inhalt des Puffers aus den Ausgabepuffer und entsorge den Inhalt des Puffers.



Stellungnahme:
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