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.