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

PHP-Caching-Mechanismus

巴扎黑
巴扎黑Original
2016-11-23 10:19:562444Durchsuche

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 Es wird ein Fehler gemeldet:

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

Header-Informationen können nicht geändert werden. Um diesen Fehler zu beheben, müssen Sie zwei Probleme verstehen.

Erstens das http-Protokoll

Im http-Protokoll gibt der Server eine HTML-Datei an den Browser aus. Die HTML-Datei besteht aus zwei Teilen, ein Teil sind die Daten unserer Seite selbst und der andere Teil Die Header-Informationen der HTML-Seite. Diese Informationen enthalten viele Daten, z. B. das Codierungsformat, in dem die Seite angezeigt wird, die Größe der HTML-Daten, ob gesprungen werden soll, ob zwischengespeichert werden soll usw. Diese HTML-Header-Dateiinformationen darf nach der Generierung nicht mehr geändert werden. Dies ist der Grund für den oben gemeldeten Fehler beim Ändern der Header-Informationen. Es besteht aus zwei Teilen des Caches, den ich als die Daten des Programms im Speicher verstehe. Durch dieses Modul öffnet PHP einen zusätzlichen Platz als Cache Wenn der PHP-Modul-Cache aktiviert ist und Echodaten im Programm vorhanden sind, werden die Daten im Cache abgelegt. Anstatt die HTML-Datei direkt zu generieren, warten Sie, bis die Ausführung des PHP-Programms abgeschlossen ist, und generieren Sie dann Der HTML-Code mit den vom Modul zwischengespeicherten Daten, einschließlich der Header-Datei:

1. Der Cache ist nicht aktiviert (die Standardeinstellung ist so).

Zu diesem Zeitpunkt wurde der Fehler „Header-Informationen können nicht geändert werden“ aufgedeckt

2. Schalten Sie den Caching-Mechanismus ein

<?php
echo "123";
header("Content-type:text/html;charset=utf-8")
echo "456";
?>

In den beiden oben genannten Beispiel: Der Cache-Status ist nicht aktiviert und ein HTML-Code wurde generiert, wenn die dritte Zeile erreicht wird. Die Header-Funktion kann die Header-Dateiinformationen nicht ändern und es wird ein Fehler gemeldet 2. ob_start(); schaltet den Cache ein (ob ist Output_buffer), wenn das Echo „123“ ist, werden die Daten in das Cache-Modul geschrieben und dann wird die Funktion header() ausgeführt nicht generiert, und dann wird auch das Echo „456“ an das Cache-Modul ausgegeben. Nach der Ausführung werden die Daten des Cache-Moduls zu einer vollständigen HTML-Seite neu generiert, sodass kein Fehler gemeldet wird

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

<?php
ob_start() ; //开启页面缓存
echo "123";
header("Content-type:text/html;charset=utf-8")
echo "456";
?>
Wie oben erwähnt, kann die Funktion ob_start() das Cache-Modul öffnen, aber diese Funktion öffnet diese Seite nur bei Bedarf Sie können die Datei php.ini ändern, die Option „output_buffering“ finden und sie in „output_buffering = 4096“ ändern (Ein ist auch in Ordnung). Die Zahl stellt die Cache-Größe dar.

Der PHP-Caching-Mechanismus hat auch einige Funktionen.

ob_start() startet die Ausgabepufferung , Die Ausgabe wird in einen internen Puffer übertragen.

ob_get_contents() Diese Funktion gibt den Inhalt des internen Puffers zurück. Dies entspricht der Umwandlung der Ausgabe in einen String. Gibt die Länge des internen Puffers zurück.

ob_end_clean() beendet den Ausgabepuffer und gibt den Inhalt des Puffers aus Puffer, und werfen Sie den Inhalt des Puffers weg.


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