Detaillierte Erläuterung der PHP-Ausgabepuffersteuerung
In diesem Artikel werden hauptsächlich detaillierte relevante Informationen und einfache Beispielcodes bereitgestellt, um Ihnen beim Lernen und Nachschlagen zu helfen.
Einführung in die PHP-Pufferung
Eigentlich ist mein Eindruck von der PHP-OB-Serie immer noch sehr vage, ich weiß nicht viel darüber, wie man sie spielt, ich habe wirklich kein tiefes Verständnis davon diese Inhalte. Als PHPer schäme ich mich sehr. Nach der Online-Suche und dem gegenseitigen Kopieren kann das vom Autor beschriebene Phänomen beim Ausführen des Codes nicht auftreten. Dieser Artikel ist ein gewissenhaftes Produkt und der Code wurde vom Autor ausgeführt.
Beim Ausführen einer Ausgabe, z. B. Echo, Drucken. Die Ausgabe wird nicht sofort an den Webserver gesendet, sondern die Daten werden in den PHP-Puffer geschrieben. Die Vorteile des PHP-Output_buffering-Mechanismus verbessern sicherlich die Leistung. Tatsächlich wird die PHP-Datei schließlich im Browser angezeigt und durchläuft drei Pufferstufen: PHP-Puffer=》Webserver-Puffer=》Browser-Puffer. Endlich im Browser angezeigt
Standardmäßig ist der PHP-Puffer aktiviert und der Standardwert des Puffers ist 4096, was 4 KB entspricht. Sie finden die Konfiguration „output_buffering“ in der Konfigurationsdatei php.ini. Puffer ist ein Speicheradressraum. Die Standardgröße des Linux-Systems beträgt im Allgemeinen 4096 (4 KB), was einer Speicherseite entspricht. Es wird hauptsächlich zum Speichern von Datenübertragungsbereichen zwischen Geräten mit unsynchronisierten Geschwindigkeiten oder Geräten mit unterschiedlichen Prioritäten verwendet. Durch den Puffer können die Prozesse weniger aufeinander warten. Hier ist ein allgemeineres Beispiel. Wenn Sie einen Texteditor öffnen, um eine Datei zu bearbeiten, schreibt das Betriebssystem das Zeichen nicht sofort direkt auf die Festplatte, sondern schreibt es beim Schreiben zuerst in den Puffer Wenn ein Puffer voll ist, werden die Daten im Puffer auf die Festplatte geschrieben. Wenn die Kernelfunktion „flush()“ aufgerufen wird, müssen natürlich die fehlerhaften Daten im Puffer zurück auf die Festplatte geschrieben werden.
Zum Beispiel muss
<?php echo "南无阿弥陀佛<br>"; header("content-type:text/html;charset='utf-8'"); echo "真善忍好!"; //output //南无阿弥陀佛 //真善忍好
header() vor jeder tatsächlichen Ausgabe aufgerufen werden, aber wir Das Programm hat eine Ausgabe, läuft aber normal. Wenn Sie sich den folgenden Code ansehen:
<?phpecho "南无阿弥陀佛<br>"; ob_flush(); header("content-type:text/html;charset='utf-8'"); echo "真善忍好!"; //output //南无阿弥陀佛 //Cannot modify header information - headers already sent by (output started at E:\php\test.php:3) //真善忍好
Das obige Programm zeigt, dass das Programm nicht sofort ausgibt, sondern nur den Puffer aktualisiert und ausgibt, wenn der ob_flush Funktion aufgerufen wird.
ob_flush() und Flush()
ob_flush() und Flush() sind in PHP verfügbar Benutzerhandbuch Detaillierte Anweisungen finden Sie hier. Der Unterschied zwischen den beiden ist:
ob_flush() dient zum Aktualisieren des PHP-eigenen Puffers.
flush() dient zum Aktualisieren des WebServer-Serverpuffers . Ausgabe an den Browser. Die folgende Situation tritt jedoch ein:
Einige Webserverprogramme, insbesondere Webserverprogramme unter Win32, speichern die Ausgabe des Skripts immer noch zwischen, bevor sie die Ergebnisse an den Browser senden . , bis zum Ende des Programms.
Einige Apache-Module, wie z. B. mod_gzip, können ihre eigene Ausgabe zwischenspeichern, was dazu führt, dass die von der Funktion „flush()“ generierten Ergebnisse nicht sofort an den Client-Browser gesendet werden.
Sogar der Browser speichert den empfangenen Inhalt zwischen, bevor er ihn anzeigt. Beispielsweise speichert der Netscape-Browser Inhalte zwischen, bis er einen Zeilenumbruch oder den Anfang eines HTML-Tags erhält, und zeigt die gesamte Tabelle erst an, wenn er ein -Tag erhält.
Einige Versionen von Microsoft Internet Explorer beginnen erst mit der Anzeige der Seite, nachdem 256 Bytes empfangen wurden. Daher müssen einige zusätzliche Leerzeichen gesendet werden, damit diese Browser den Seiteninhalt anzeigen können.
Zum Beispiel:
<?php /** Server:LightTPD/1.4.28 (Win32) X-Powered-By:PHP/5.3.27 */ echo '佛法无边'."<BR>"; ob_flush(); flush(); sleep(1); echo '法轮常转'; //output
Der obige Code wird Zeile für Zeile im Chrome-Browser ausgegeben und auf dem Das heißt, der Browser gibt alle Serien aus. Tatsächlich handelt es sich um das vierte Element oben. Einige Browser beginnen mit der Anzeige erst, wenn sie 256 Zeichen empfangen. Ändern Sie den obigen Code in die folgende Form:
<?php /** Server:LightTPD/1.4.28 (Win32) X-Powered-By:PHP/5.3.27 */ echo str_pad('',240)."\n"; echo '佛法无边'."<BR>"; ob_flush(); flush(); sleep(1); echo '法轮常转'; //output
Auf diese Weise wird er zeilenweise im IE ausgegeben, da er 256 Zeichen überschreitet.
ob Andere Funktionsbeschreibungen
1.ob_end_flush und ob_end_clean
Ende endet, wie der Name schon sagt, schließt Die Pufferbereiche schalten beide den Ausgabepuffer aus, einer ist der Ausgabepuffer und der andere ist leer. Beispiel:
<?php /** Server:LightTPD/1.4.28 (Win32) X-Powered-By:PHP/5.3.27 */ echo 'before'; ob_end_clean(); echo str_pad('',4096)."\n"; for ($i=10; $i>0; $i--) { echo $i; sleep(1); }
Der obige Code gibt den gesamten Inhalt auf einmal aus, anstatt ihn einzeln auszugeben. Schaltet ob_end_clean() den Puffer nicht aus? Warum nicht einzeln ausgeben? Tatsächlich wird PHP, wie oben erwähnt, nicht direkt an den Browser, sondern an den Webserver ausgegeben. Obwohl PHP keine Pufferung hat. Aber der Webserver existiert noch. Der folgende Code:
/** Server:LightTPD/1.4.28 (Win32) X-Powered-By:PHP/5.3.27 */ echo 'before'; ob_end_clean(); echo str_pad('',4096)."\n"; for ($i=10; $i>0; $i--) { flush(); echo $i; sleep(1); }
plus Flush() gibt es Zeile für Zeile aus. Wenn Sie ob_end_clean durch ob_end_flush ersetzen, wird before ausgegeben.
Weitere Funktionen entnehmen Sie bitte dem Handbuch, das relativ einfach ist.
Zusammenfassung
Vom PHP-Skript zum Browser müssen Sie php buffer=》web server buffer=》browser buffer durchlaufen. Endlich im Browser angezeigt. Beides ist unverzichtbar. Wir benötigen also ob_flush und Flush und fügen echo str_pad('',4096) hinzu, um den gewünschten Effekt zu debuggen.
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.
Verwandte Empfehlungen:
Anmelde-, Registrierungs- und Passwortänderungsfunktionen in PHP implementiert
Detaillierte Erläuterung der anonymen PHP-Funktionen und Vorsichtsmaßnahmen
Verwendung der Callback-Funktion call_user_func_array in PHP
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der PHP-Ausgabepuffersteuerung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.
