Heim >Backend-Entwicklung >PHP-Tutorial >PHP verwendet ob_flush, um in die Pit-Analyse einzusteigen
In diesem Artikel wird hauptsächlich das Prinzip vorgestellt, dass PHP bei Verwendung von ob_flush nicht jede Sekunde ausgeben kann. Außerdem werden die zugehörigen Prinzipien von PHP mit ob_flush und die Methode zur Verwendung von CLI unter Linux detailliert analysiert. Ich hoffe, es hilft 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, lass uns zurückkommen. Schauen Sie sich diesen Code 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 ausgegeben werden ? ?
Ursachenanalyse:
Apache-Funktionsprinzip: Wenn Sie auf eine Adresse zugreifen (eine Anfrage senden), startet Apache PHP, dann erfolgt die PHP-Ausführung auf Seitenebene ist, wenn Es gibt ausführbaren Code: Nachdem alles ausgeführt wurde, wird er 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
Es kann direkt per PHP implementiert werden, ohne über Apache oder Webservice zu gehen:
<?php $i = 3; while ($i--) { echo $i, "\n"; sleep(1); } ob_end_clean(); ?>
Verwandte Empfehlungen:
Einführung in den PHP-OB-Cache und detaillierte Erklärung der Ob-Funktion
Eine kurze Analyse und ein Verständnis von PHP-OB Cache
Ausführliche Erklärung der Verwendung von PHP ob_start
Das obige ist der detaillierte Inhalt vonPHP verwendet ob_flush, um in die Pit-Analyse einzusteigen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!