Heim Backend-Entwicklung PHP-Tutorial PHP-Grundlagen-Tutorial PHP-Seitenpufferungsmechanismus

PHP-Grundlagen-Tutorial PHP-Seitenpufferungsmechanismus

Nov 07, 2016 am 11:51 AM

PHP verfügt über viele Mechanismen und Funktionen. Wenn es wiederholt verwendet wird, treten bereits bei einfacher Anwendung magische Effekte auf. Band of Brothers PHP-Schulung

Hier ist die ob_start()-Funktion.

Die Funktion ob_start() wird zum Öffnen des Puffers verwendet. Wenn beispielsweise vor der Funktion header() eine Ausgabe erfolgt, einschließlich Wagenrückläufen, Leerzeichen und Zeilenvorschüben, wird der Fehler „Header“ angezeigt hatte alles bereit send by". In diesem Fall können Sie ob_start() verwenden, um den Puffer zu öffnen. Der Datenblock des PHP-Codes und die Ausgabe von echo() gelangen in den Puffer und werden nicht sofort ausgegeben. Das Öffnen des Puffers hat natürlich funktioniert Viele Funktionen, nutzen Sie einfach Ihre Fantasie. Die folgenden vier Punkte können zusammengefasst werden:

1. Wird vor header() verwendet

ob_start(); //Open buffer

echo ”Hallon”; //Ausgabe

header(“location: index.php”);//Umleiten des Browsers zu index.php

ob_end_flush();//Geben Sie den gesamten Inhalt aus Browser

 ?>

 2 Die Funktion .phpinfo() kann Client- und Serverinformationen abrufen, aber die Puffermethode ist die beste Wahl, um Clientinformationen zu speichern

 ob_start( ); //Öffne den Puffer

phpinfo(); //Verwende die phpinfo-Funktion

$info=ob_get_contents(); //Den Inhalt des Puffers abrufen und ihn $info zuweisen

$file=fopen('info. txt','w'); //Öffne die Datei info.txt

fwrite($file,$info); info.txt

fclose($file) ; //Schließe die Datei info.txt

 ?>

3. Statische Seitentechnologie

ob_start( );//Puffer öffnen

 ?>

 Alle Ausgaben der PHP-Seite

 $content =ob_get_contents();//Alle Inhalte der PHP-Seitenausgabe abrufen

 $fp =fopen("output00001.html", "w"); //Erstelle eine Datei und öffne sie, bereit zum Schreiben

 fwrite($fp, $content); den gesamten Inhalt der PHP-Seite in „output00001.html“ und dann...

 fclose($fp); $code) {

ob_start();

eval ($code);

$contents =ob_get_contents();

ob_end_clean(); else {

echo „Fehler! Keine Ausgabe“ ;

exit();

return $contents; die Ausgabe von Daten im Skript. Dies ist sehr nützlich, insbesondere wenn Sie den Dateiheader nach der Datenausgabe ausgeben möchten. Die Ausgabesteuerungsfunktion hat keinen Einfluss auf die mit header() oder setcookie() gesendeten Datei-Header-Informationen, sondern nur auf die Datenblöcke ähnlich echo() und PHP-Code.

Lassen Sie uns ein einfaches Beispiel geben, um Ihnen einen allgemeinen Eindruck von OutputControl zu vermitteln:

Beispiel 1.

CODE
ob_start (); //Puffer öffnen

echo „Hellon“; //Ausgabe

header(“location:index.php“); //Den Browser auf index.php umleiten

ob_end_flush();//Geben Sie den gesamten Inhalt an den Browser aus

 ?>

Jeder, der die Funktion header() kennt, weiß, dass diese Funktion einen Absatz sendet. Der Dateiheader wird an den gesendet Wenn jedoch vor der Verwendung dieser Funktion eine Ausgabe erfolgt (einschließlich leerer Ausgaben wie Leerzeichen, Wagenrückläufe und Zeilenvorschübe), wird ein Fehler angezeigt. Wenn wir ob_start() in der ersten Zeile entfernen und dieses Programm erneut ausführen, erhalten wir eine Fehlermeldung: „Header had all ready send by“ Bei ob_start gibt es jedoch keine Fehlermeldung, da der Puffer leer ist Wenn der Bereich aktiviert ist, werden die Zeichen nach dem Echo nicht an den Browser ausgegeben, sondern bleiben auf dem Server erhalten. Sie werden erst ausgegeben, wenn Sie Flush oder ob_end_flush verwenden, sodass keine Fehler bei der Ausgabe des Dateiheaders auftreten
1. Einführung zu verwandten Funktionen:

1. Leeren: Aktualisieren Sie den Inhalt des Puffers und geben Sie ihn aus.
Funktionsformat: Flush()

Beschreibung: Diese Funktion wird häufig verwendet und ist sehr effizient.

2. ob_start: Öffne den Ausgabepuffer

Funktionsformat: void ob_start(void)

Beschreibung: Wenn der Puffer aktiviert ist, werden alle Nicht-Datei-Header vom PHP Programm Keine der Informationen wird gesendet, sondern in einem internen Puffer gespeichert. Um den Inhalt des Puffers auszugeben, können Sie ob_end_flush() oder Flush() verwenden, um den Inhalt des Puffers auszugeben.

 3. ob_get_contents: Gibt den Inhalt des internen Puffers zurück.

Verwendung: stringob_get_contents(void)

Beschreibung: Diese Funktion gibt den Inhalt des aktuellen Puffers zurück. Wenn der Ausgabepuffer nicht aktiviert ist, wird FALSE zurückgegeben.

 4. ob_get_length: Gibt die Länge des internen Puffers zurück.

Verwendung: intob_get_length(void)

Beschreibung: Diese Funktion gibt die Länge im aktuellen Puffer zurück, genau wie ob_get_contents, wenn der Ausgabepuffer nicht aktiviert ist. gibt dann FALSE zurück.

5. ob_end_flush: Senden Sie den Inhalt des internen Puffers an den Browser und schließen Sie den Ausgabepuffer.

Verwendung: voidob_end_flush(void)

Beschreibung: Diese Funktion sendet den Inhalt des Ausgabepuffers (falls vorhanden).

6. ob_end_clean: Löschen Sie den Inhalt des internen Puffers und schließen Sie den internen Puffer

Verwendungsmethode: voidob_end_clean(void)

Hinweis: Diese Funktion gibt den internen Puffer nicht aus Pufferbereichsinhalt, aber löschen!

7. ob_implicit_flush: Absolute Aktualisierung ein- oder ausschalten

Verwendungsmethode: void ob_implicit_flush([int flag])

Beschreibung: Verwenden Jeder, der Perl verwendet hat, kennt die Bedeutung von $|=x. Diese Zeichenfolge kann den Puffer öffnen/schließen, und die Funktion ob_implicit_flush ist die gleiche. Standardmäßig wird der Puffer nach dem Einschalten der absoluten Ausgabe geschlossen wird direkt an Browser gesendet, die nicht mehr Flush() aufrufen müssen

2. Detailliertes Verständnis:

1. Über die Flush-Funktion:

Diese Funktion erschien in PHP3 und ist eine sehr effiziente Funktion zum Aktualisieren des Browser-Cache. Nehmen wir ein Beispiel mit einem sehr offensichtlichen Laufeffekt, um das Flush zu veranschaulichen >CODE php

 for($i = 1; $i
// Mit anderen Worten, wenn der Cache-Inhalt eine bestimmte Größe nicht erreicht, wird er nicht vor dem Programm ausgegeben hingerichtet. Nach
 // Nach dem Testen habe ich festgestellt, dass die Untergrenze dieser Größe 256 Zeichen lang ist. Dies bedeutet, dass die vom Cache empfangenen Inhalte in Zukunft kontinuierlich gesendet werden
//.

 For($j = 1; $j
 echo $j.“

 flush( ); //Dadurch wird der neue Inhalt aus dem Cache herausgedrückt und im Browser angezeigt

sleep(1); //Lassen Sie das Programm eine Sekunde lang „schlafen“, damit Sie es sehen können Wirkung: Klarer sehen. 🎜> Der neueste PHP-Chatroom von PHP2000 verwendet diese Technologie. Leider wird der Quellcode nicht offengelegt Um die absolute Aktualisierung zu aktivieren, können Sie Flush() nicht mehr im Programm verwenden. Der Vorteil davon ist: verbesserte Effizienz:

Ich würde Ich möchte zunächst ein Beispiel meines guten Freundes y10k zitieren:

Beispiel 3.

Zum Beispiel können Sie die Einstellungsinformationen des Servers und des Clients verwenden, diese Informationen sind jedoch je nach Fall unterschiedlich Was ist, wenn Sie die Ausgabe der Funktion phpinfo() speichern möchten? Bevor es keine Puffersteuerung gab, kann man sagen, dass es überhaupt keine Möglichkeit gab, aber mit der Puffersteuerung können wir das Problem leicht lösen:

 CODE
ob_start(); / /Öffnen Sie den Puffer

phpinfo(); //Verwenden Sie die phpinfo-Funktion

$info= ob_get_contents(); //Den Inhalt des Puffers abrufen und $info

zuweisen $file=fopen('info.txt','w'); //Öffne die Datei info.txt

fwrite($file,$info); //Informationen in info.txt schreiben

 fclose($file); //Schließe die Datei info.txt

 ?> 🎜>
Mit der oben genannten Methode können Sie die PHPInfo-Informationen verschiedener Benutzer speichern, was in der Vergangenheit wahrscheinlich nicht möglich war. Tatsächlich handelt es sich bei der oben genannten Methode um eine Methode zum Konvertieren einiger „Prozesse“. in „Funktionen“!

Jemand könnte fragen: „Ist das genau so? Gibt es natürlich noch andere Verwendungsmöglichkeiten?“ (Die standardmäßige Syntaxhervorhebungsfunktion von PHP wird direkt ausgegeben und kann das Ergebnis nicht speichern. Wenn es bei jedem Aufruf angezeigt wird, ist dies eine Verschwendung von CPU. Das Forum des Autors fügt Syntaxhervorhebung hinzu. Die von der Bright-Funktion angezeigten Ergebnisse werden von beibehalten Wenn Sie interessiert sind, können Sie einen Blick auf http://www.zphp.com/bbs/ werfen.

Vielleicht interessieren Sie sich jetzt für ob_start(), von dem ich ein gewisses Verständnis habe Die Funktion scheint einfach zu sein, aber tatsächlich habe ich die wichtigsten Punkte bei der Verwendung von ob_start() gemeistert.
 
Verwenden Sie ob_start, um den Cache des Browsers zu öffnen. Dadurch wird sichergestellt, dass der Inhalt des Caches nicht ausgegeben wird, bevor Sie Flush(), ob_end_flush() aufrufen (oder das Programm ausgeführt wird).

Jetzt sollten Sie die Vorteile kennen, die Sie haben: Sie können Header, Setcookie und Session nach jedem Ausgabeinhalt verwenden, was eine großartige Funktion von ob_start ist. Sie können auch die Parameter von ob_start verwenden, nachdem der Cache geschrieben wurde Führen Sie dann automatisch den Befehl aus, z. B. ob_start("ob_gzhandler"); und unsere am häufigsten verwendete Methode besteht darin, ob_get_contents() zu verwenden, um den Inhalt im Cache abzurufen und ihn dann zu verarbeiten ...

 . Wenn die Verarbeitung abgeschlossen ist, können wir schließlich verschiedene Methoden zur Ausgabe verwenden: Flush(), ob_end_flush() und die automatische Ausgabe nach der Ausführung des Programms. Wenn Sie ob_get_contents() verwenden, müssen Sie die Ausgabemethode natürlich selbst steuern.

Komm, lass uns sehen, was wir mit den ob-Serienfunktionen machen können...

1. Statische Template-Technologie

Einführung: Die sogenannte statische Template-Technologie ist dazu da Verwenden Sie eine bestimmte Methode, sodass der Benutzer auf der Clientseite die von PHP generierte HTML-Seite erhält. Wenn diese HTML-Seite nicht mehr aktualisiert wird, ruft das Programm PHP und zugehörige Datenbanken nicht mehr auf, wenn ein anderer Benutzer diese Seite erneut durchsucht. Für einige Websites mit einer großen Informationsmenge, z. B. Sina, 163, Sohu. Die Vorteile einer solchen Technologie sind enorm.

Ich kenne zwei Möglichkeiten, eine statische Ausgabe zu erreichen:

Implementiert durch eine Klasse namens template.inc.php von phplib, modifiziert durch y10k.

  Implementiert mit ob-Serienfunktionen.

Was die erste Methode betrifft, werde ich nicht näher darauf eingehen, da sie nicht Gegenstand dieses Artikels ist.

Schauen wir uns nun die konkrete Implementierung der zweiten Methode an:

Beispiel 4.

CODE
ob_start();/ /Öffnen Sie den Puffer

 ?>

 Alle Ausgaben der PHP-Seite

   

 $content =ob_get_contents();//Holen Sie sich die PHP-Seite Seitenausgabe Der gesamte Inhalt von

$fp =fopen("output00001.html", "w"); //Erstelle eine Datei und öffne sie, bereit zum Schreiben

fwrite($fp , $content ); //Schreibe den gesamten Inhalt der PHP-Seite in „output00001.html“ und dann...

 fclose($fp> ?>

 Auf diese Weise lassen sich die sogenannten statischen Templates einfach implementieren...

2. Ausgabe erfassen

Das obige Beispiel 4. ist der einfachste Fall. Sie können $content auch vorher ändern Schreiben. Vorgang...

Sie können versuchen, einige Schlüsselwörter zu erfassen und sie dann erneut zu verarbeiten, z. B. die in Beispiel 3 beschriebene PHP-Syntaxhervorhebung. Persönlich denke ich, dass diese Funktion der beste Teil dieser Funktion ist. Sie kann eine Vielzahl von Problemen lösen, erfordert jedoch genügend Vorstellungskraft ...

 Beispiel 5.

CODE
Funktion run_code($code) {  

If($code) {

eval($code); >
$contents =ob_get_contents();

ob_end_clean();

}else {

echo "Fehler! Keine Ausgabe"; exit();

 }

return $contents;

 }

Das obige Beispiel ist nicht sehr nützlich, aber es ist sehr typisch für $code Es handelt sich um eine Ausgabeseite mit Variablen. In diesem Beispiel wird eval verwendet, um die Variablen in $code zu ersetzen. Anschließend werden die Ausgabeergebnisse erfasst und erneut verarbeitet ...

 Beispiel 6. Geschwindigkeit ​up-Übertragung

CODE

ob_implicit_flush(0); 🎜>
if (headers_sent() ||connection_timeout() || Connection_aborted()){

return 0;

} , 'x-gzip') !== false) return ”x-gzip";  

 if(strpos( $HTTP_ACCEPT_ENCODING,'gzip') !== false) return „gzip“;

return 0; if ($ENCODING){

print „n
n“;

$Contents =ob_get_contents();

ob_end_clean();

if ($debug){

 $s = ”
Notcompress length: ”. strlen($Contents);

 $s .= ”

Komprimierte Länge: .strlen(gzcompress($Contents,$level));

$Contents .= $s;

} );

print”x1fx8bx08×00x00×00x00×00“;

$ Inhalt =gzcompress($Contents,$level);

 $Contents = substr($Contents,0, strlen($Contents) – 4);

 print $Contents;

print pack('V',$Crc); 🎜>
print pack('V',$Size);

Exit;

ob_end_flush();

Exit ;

 }

 }

 ?>

  Dies ist ein sehr alter Code von catoc, den ich auf weblogs.com gesehen habe Tests zeigen, dass der Effekt bei Seiten über 10 KB auftritt, und je größer die Seite, desto offensichtlicher ist der Effekt ...

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Erklären Sie das Konzept der späten statischen Bindung in PHP. Erklären Sie das Konzept der späten statischen Bindung in PHP. Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Mar 28, 2025 pm 05:12 PM

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Mar 28, 2025 pm 05:11 PM

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

See all articles