Das Beispiel in diesem Artikel beschreibt das Prinzip, dass PHP bei Verwendung von ob_flush nicht jede Sekunde ausgeben kann. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:
Implementierungsfunktion:
Der Browser gibt jede Sekunde eine Zahl aus.
php.ini ist konfiguriert als:
Version 5.3
implicit_flush = off
output_buffering = off
Sonstiges: Überprüfen Sie, ob Output_buffering aktiviert ist , Sie können:
var_dump(ini_get('output_buffering'));
Okay, schauen wir uns diesen Code noch einmal an:
<?php $i = 3; ob_start(); while ($i--) { echo $i, "<br />"; ob_flush(); flush(); sleep(1); } ob_end_clean(); ?>
Aber warum: Dieser Code kann nicht jede Sekunde verwendet werden. Was ist mit der Ausgabe? ?
Ursachenanalyse:
Apache-Funktionsprinzip: Wenn Sie auf eine Adresse zugreifen (eine Anfrage senden), startet Apache PHP, dann erfolgt die PHP-Ausführung auf Seitenebene, das heißt, wenn eine ausführbare Datei vorhanden ist Code: Nachdem alles ausgeführt wurde, wird es an Apache geworfen, und Apache wird dann an den Browser geworfen, um die Ergebnisse anzuzeigen
Wie erreicht man das?
Was ist der Unterschied, wenn die CLI die Ergebnisse anders anzeigt?
linux cmd:
php5 test.php
Direkt von PHP ausgeführt, ohne Apache oder Webservice zu nutzen, können Sie Folgendes erreichen:
<?php $i = 3; while ($i--) { echo $i, "\n"; sleep(1); } ob_end_clean(); ?>
Ich hoffe, dass dieser Artikel für das PHP-Programmierdesign aller hilfreich sein wird.
Weitere relevante Artikel zur prinzipiellen Analyse von PHP mit ob_flush, das nicht jede Sekunde ausgegeben werden kann, finden Sie auf der chinesischen PHP-Website!