Heim  >  Artikel  >  Backend-Entwicklung  >  PHP verwendet ob_flush, um in die Pit-Analyse einzusteigen

PHP verwendet ob_flush, um in die Pit-Analyse einzusteigen

*文
*文Original
2017-12-27 10:41:581349Durchsuche

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!

Stellungnahme:
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