PHP-Puffer
Dieser Artikel stellt das Wissen über PHP-Puffer vor und gebe einen Hinweis an Freunde, die einen Blick darauf werfen
Was? 🎜> Einfach ausgedrückt besteht die Funktion eines Puffers darin, den Eingabe- oder Ausgabeinhalt zuerst in den Speicher zu legen, ohne ihn anzuzeigen oder zu lesen. Die Frage, warum es einen Puffer gibt, ist eine sehr weit gefasste Frage
Wenn Sie beim Ausführen von PHP auf Code stoßen, der Daten ausgibt, z. B. echo print_r, legt PHP die auszugebenden Daten in den eigenen Puffer von PHP und wartet auf die Ausgabe.
Welche Rolle spielt der Puffer in PHP?1 wurde vor der Verwendung der Header-Funktion ausgegeben, was zu bestimmten Fehlern führt, z. B. Header-Informationen können nicht geändert werden – Header wurden bereits gesendet von;
1 2
|
|
Der Grund für diesen Fehler ist, dass einige Daten vor dem Header ausgegeben wurden und Apache während der Ausgabe dieser Daten gleichzeitig einen Antwortstatus an den Browser sendet (da eine Ausgabe erfolgt, ist diese Anfrage gültig). und dann verwenden Sie die Header-Funktion
erneut, um den HTTP-Header zu senden. Der Fehler bedeutet: Der HTTP-Header wurde gesendet und Sie können ihn nicht ändern.
Warum kann dieser Fehler vermieden werden? ?
Da die Header-Funktion nicht vom Puffer beeinflusst wird, führt PHP sofort Apache aus, um diesen HTTP-Header an den Browser zu senden Daten werden im Puffer gespeichert und warten auf die Ausgabe. Dies kann die Fehler vermeiden, die zuvor aufgetreten sind.
2. Beim Schreiben von Dateien und beim Herunterladen von Programmen über PHP.
Um das Herunterladen von Dateien sicherer zu machen und die Kontrollierbarkeit zu verbessern, Viele Freunde verwenden gerne PHP, um Datei-Download-Seiten zu schreiben. Das Prinzip ist sehr einfach: Lesen und Anzeigen des Dateiinhalts über fwrite und anschließendes Senden des HTTP-Headers über den Header. Lassen Sie den Browser wissen, dass es sich um einen Anhang handelt dass
den Effekt der Bereitstellung von Downloads erzielen kann
Wenn Sie die oben beschriebene Methode zum Bereitstellen einer Download-Seite verwenden, treten Effizienzprobleme auf. Wenn eine Datei groß ist, gehen Sie davon aus, dass sie 100 MB groß ist Pufferausgabe: Alle 100 Millionen Daten müssen ausgelesen und dann auf einmal an die Seite zurückgegeben werden. Wenn dies geschieht, erhält der Benutzer keine Antwort, bis alle Daten gelesen sind
, was die Benutzererfahrung verbessert 🎜> Wenn der Ausgabepuffer aktiviert ist und das PHP-Programm einen bestimmten Abschnitt der Datei gelesen hat, gibt es ihn sofort an Apache aus und lässt Apache dann sofort zum Browser zurückkehren, was die Wartezeit des Benutzers verkürzen kann Was folgt: Was tun mit den Daten? Wir können eine While-Schleife schreiben, um die Datei Abschnitt für Abschnitt zu lesen.
Jedes Mal, wenn ein Abschnitt gelesen wird, wird dieser sofort ausgegeben, bis die gesamte Datei ausgegeben ist, sodass der Browser fortfahren kann Um Daten zu empfangen, müssen Sie nicht warten, bis alle Dateien gelesen sind.
Darüber hinaus löst dieser Ansatz auch ein weiteres sehr ernstes Problem, wenn beispielsweise eine Datei 100 MB groß ist und der Puffer nicht aktiviert ist Wenn das PHP-Programm jedoch ein Speicherlimit hat, legt der Administrator normalerweise ein Limit für die PHP-Ausführung fest 🎜> Speicher (durch das Gesamtspeicherlimit von php.ini, das standardmäßig auf 8 MB eingestellt ist), d Wenn die Datei 100 MB groß ist, reicht der Speicher zum Lesen nicht aus. Dieses Mal müssen wir die oben beschriebene
Viele Unternehmen verfügen mittlerweile über einen solchen. Die Anforderung besteht darin, dass beim ersten Besuch einer bestimmten Seite PHP ausgeführt wird und der angezeigte Inhalt dann an den Browser zurückgegeben wird Gleichzeitig muss der angezeigte Inhalt auf dem Server gespeichert werden, damit er beim nächsten Besuch direkt angezeigt wird. Zeigen Sie die auf dem Server gespeicherten Dateien direkt an, ohne sie über PHP bedienen zu müssen.
Dies ist der Sogenannter „statischer Seitencache“. Wie können wir also den Inhalt an den Browser zurückgeben und gleichzeitig die Daten auf dem Server speichern? "0">
1
2
3
4
5
6
1 2 3 4 5 6 |
|
ob_start();
echo
'aaa'
;
$string
= ob_get_contents();
file_put_contents
(
'a.html'
,
$string
);
ob_flush();
flush
();
Konfiguration im Zusammenhang mit dem Ausgabepuffer
In PHP.INI gibt es zwei Konfigurationselemente, die eng mit dem Puffer verknüpft sind
1.output_buffering
Diese Konfiguration Es wirkt sich direkt aus der Puffer von PHP selbst, und es gibt drei Konfigurationsparameter on/off/xK (x ist ein ganzzahliger Wert);
on – öffne den Puffer
off – schließe den Puffer
256k – Einschalten Puffer, und wenn der Inhalt des Puffers 256 KB überschreitet, wird der Puffer automatisch aktualisiert (senden von Daten an Apache);
2. Diese Konfiguration wirkt sich direkt auf den Apache-Puffer aus. Es gibt 2 Konfigurationsparameter . ein/aus
ein – Apache-Puffer automatisch aktualisieren, d. h. wenn PHP Daten an den Apache-Puffer sendet, muss es nicht auf andere Anweisungen warten und gibt die Ausgabe direkt an den Browser zurück
aus – tun Warten Sie nach dem Empfang der Daten nicht automatisch auf den Aktualisierungsbefehl
Pufferbezogene Funktionen
1 ob_implicit_flush
Die Funktion ist dieselbe wie implicit_flush Der automatische Flush-Apache-Puffer
2.flush
besteht darin, Anweisungen an Apache zu senden, damit Apache seinen eigenen Ausgabepuffer aktualisiert
3.ob_start
Öffnen Sie den Ausgabepuffer, unabhängig von der php.ini-Datei Zum Konfigurieren wird bei Verwendung dieser Funktion der Ausgabepuffer geöffnet, auch wenn „output_buffering“ auf „off“ gesetzt ist.
Die ob_start-Funktion akzeptiert auch einen Parameter, bei dem es sich um einen Rückruf einer Funktion handelt, d. h. vor der Eingabe des Pufferinhalts , Sie müssen die übergebenen Parameter aufrufen, um den Inhalt des Puffers einmal zu verarbeiten und ihn dann in den Puffer zu legen
4.ob_flush
weist PHP selbst an, seinen eigenen Puffer zu aktualisieren und die Daten an Apache zu senden
5.ob_clean
Löschen Sie den Inhalt des PHP-Puffers
6.ob_end_clean
Löschen Sie den Inhalt des PHP-Puffers und schließen Sie den Ausgabepuffer
7.ob_end_flush
Senden Sie den Inhalt von PHPs eigenem Puffer an Apache senden und den Inhalt seines eigenen Puffers löschen
8.ob_get_clean
Nachdem Sie den Inhalt des Puffers erhalten haben, löschen Sie den Puffer.
9.ob_get_contents
Rufen Sie den Inhalt des Ausgabepuffers ab
10.ob_get_flush
Den Inhalt im Puffer abrufen und an Apache senden
11.ob_get_length
Die Länge des Inhalts im Puffer abrufen
12.ob_list_handlers
Beim Ausführen abrufen ob_start, Der Name der zurückgerufenen Funktion, zum Beispiel:
ob_start('ob_gzhandler');
print_r(ob_list_handlers);
druckt ob_gzhandler;
13.ob_gzhandler
Diese Funktion Funktionen wie ob_start Der Callback-Parameter ruft diese Funktion auf, um eine GZIP- oder Deflate-Komprimierung für die Daten durchzuführen.
Verwendung von pufferbezogenem Inhalt 1. Die Reihenfolgebeziehung zwischen ob_flush und Flush. Aus der obigen Analyse geht hervor, dass ob_flush mit PHP selbst zusammenhängt, während wir diese beiden Funktionen verwenden um sie zuerst auszuführen. ob_flush,
und dann Flush ausführen, da wir die Daten zuerst von PHP an Apache senden und sie dann von Apache an den Browser zurücksenden müssen, wenn PHP die Daten nicht aktualisiert hat wird aufgerufen, Apache wird nichts haben Die Daten werden an den Browser zurückgegeben
1 2 1 2 3 4 5 4 5 <🎜> <🎜> 1 1 Detaillierte Erklärung zur Beschleunigung Ihrer Website durch Aktualisierung des PHP-Puffers
3
<?php
echo
str_repeat
(
" "
,4096);
?>
<?php
<🎜>echo</ code> <code class="php Functions">str_repeat
(
" "
,4096);
<🎜>? >
4. Wenn Sie das Komprimierungsmodul von mod_gzip aktivieren, kann dies dazu führen, dass Ihre Flush-Funktion nicht aktualisiert wird. Der Grund dafür ist, dass mod_gzip über einen eigenen Ausgabepuffer verfügt, der Apache anweist um den Ausgabepuffer zu aktualisieren, aber wenn der Inhalt komprimiert werden muss, gibt Apache den Inhalt an sein eigenes mod_gzip-Modul aus und gibt ihn nicht sofort aus, sodass der Inhalt nicht sofort ausgegeben werden kann Zur Verbesserung In diesem Fall können Sie das Modul mod_gzip deaktivieren oder den folgenden Inhalt zu httpd.conf hinzufügen, um die Komprimierung zu deaktivieren
SetEnv no-gzip dont-vary
tr>SetEnv no-gzip dont-vary
Das obige ist der detaillierte Inhalt vonPHP-Puffer. 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



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.

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

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
