Funktionen des PHP-Puffers

墨辰丷
Freigeben: 2023-03-29 18:30:01
Original
1752 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich die Funktionen des PHP-Puffers vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

Der Code lautet wie folgt:

<?php
for ($i=10; $i>0; $i--)
{
  echo $i;
  flush();
  sleep(1);
}
?>
Nach dem Login kopieren

Laut PHP Handbuch:

Diese Funktion sendet alle bisherigen Ausgaben des Programms an den Browser des Benutzers.

Der obige Code sollte jede Sekunde $i ausgeben. Dies ist jedoch in der Praxis nicht unbedingt der Fall. Es ist möglich, dass nach einer Wartezeit von 10 Sekunden alle Ausgaben gleichzeitig angezeigt werden.

Okay, ändern wir diesen Code in

<?php
ob_end_clean();//修改部分
for ($i=10; $i>0; $i--)
{
  echo $i;
  flush();
  sleep(1);
}
?>
Nach dem Login kopieren

Es ist auch in Ordnung, wenn wir ob_end_clean() durch ob_end_flush() ersetzen.

<?php
for ($i=10; $i>0; $i--)
{
  echo $i;
  ob_flush();//修改部分
  flush();
  sleep(1);
}
?>
Nach dem Login kopieren

Führen Sie es aus und stellen Sie fest, dass $i auch jede Sekunde ausgegeben wird? Warum ist das so?
Keine Sorge, werfen wir einen Blick auf php.ini.

Öffnen Sie php.ini und suchen Sie nach „output_buffering“. Wir sehen eine Einstellung wie diese: „output_buffering = 4096“. Genau wie der Name „output_buffering“ besteht die Funktion dieser Einstellung darin, die Ausgabe zu puffern. Die Puffergröße beträgt 4096 Bytes.

In unserem ersten Codeteil liegt der Grund dafür, dass die Ausgabe nicht wie erwartet ist this output_buffering Puffert diese Ausgaben. Die Ausgabe wird erst gesendet, wenn 4096 Bytes erreicht sind oder das Skript endet.

Die Funktion von ob_end_clean() und ob_end_flush() im zweiten Codeteil besteht darin, die Pufferung zu beenden. Auf diese Weise muss vor dem Versenden nicht gewartet werden, bis ein Puffer von 4096 Byte vorhanden ist.

Im dritten Codeteil wird ob_flush() verwendet. Seine Funktion besteht darin, die gepufferten Daten zu senden, die Pufferung wird jedoch nicht beendet, daher muss es vor jedem Flush() verwendet werden.

Wenn wir ob_end_clean(), ob_end_flush() und ob_flush() nicht verwenden möchten, müssen wir den Output_buffering in php.ini klein genug setzen, zum Beispiel auf 0. Bitte beachten Sie, dass diese Methode nicht funktioniert, wenn Sie planen, ini_set("output_buffering", "0") zum Festlegen in einem Skript zu verwenden. Bitte stoppen Sie dies, da diese Methode nicht funktioniert. Denn zu Beginn des Skripts wurden die Pufferungseinstellungen geladen und dann beginnt die Pufferung.

Vielleicht fragen Sie sich, warum Sie „flush()“ verwenden müssen, da ob_flush() die gepufferten Daten sendet? Können Sie nicht einfach den folgenden Code verwenden? ?

<?php
for ($i=10; $i>0; $i--)
{
  echo $i;
  ob_flush();
  sleep(1);
}
?>
Nach dem Login kopieren

Bitte beachten Sie den Unterschied zwischen ob_flush() und Flush(). Ersteres besteht darin, Daten aus dem PHP-Puffer freizugeben, und letzteres besteht darin, Daten, die sich nicht im Puffer befinden oder freigegeben wurden, an den Browser zu senden. Wenn also der Puffer vorhanden ist, müssen wir ob_flush() und Flush() gleichzeitig verwenden.

Ist Flush() hier unverzichtbar? Nein, wir haben eine andere Methode, bei der Daten bei der Ausgabe sofort an den Browser gesendet werden. Die folgenden beiden Codeteile müssen Flush() nicht verwenden. (Wenn Sie „output_buffering“ auf 0 setzen, benötigen Sie nicht einmal ob_flush() und ob_end_clean())

<?php
ob_implicit_flush(true);
for ($i=10; $i>0; $i--)
{
  echo $i;
  ob_flush(); #如果ob函数打开的情况下
  sleep(1);
}
?>
Nach dem Login kopieren

<?php
ob_end_clean();
ob_implicit_flush(true);
for ($i=10; $i>0; $i--)
{
  echo $i;
  sleep(1);
}
?>
Nach dem Login kopieren

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP-Methoden und Beispiele zur Implementierung von Prozesssteuerungsschaltern

So erhalten Sie den Kontrollkästchenwert in PHP und ein einfaches Beispiel

Detaillierte Grafik- und Texterklärung, wie PHP Text verwendet, um Besuche zu zählen

Das obige ist der detaillierte Inhalt vonFunktionen des PHP-Puffers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage