Aktueller Standort: Startseite> Neueste Artikel> Nimmt die Verwendung von Flush () wirksam? Vielleicht stimmt mit Ihrem Webserver -Setup etwas nicht stimmt

Nimmt die Verwendung von Flush () wirksam? Vielleicht stimmt mit Ihrem Webserver -Setup etwas nicht stimmt

gitbox 2025-09-20
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Hier sind einige Dinge, die nicht mit dem Inhalt des Artikels zusammenhängen PHP Code</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Initialisieren Sie die Umgebung...\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Der Artikel beginnt</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>

<h1>verwenden </span><span><span class="hljs-title function_ invoke__">flush</span></span><span>() Nicht effektiv?Wahrscheinlich deine Web Es gibt ein Problem mit dem Server -Setup</h1>

<p>existieren PHP In der Entwicklung,`</span><span><span class="hljs-title function_ invoke__">flush</span></span><span>()` 函数常被verwenden来立即将输出发送到客户端,Anstatt zu warten, bis das Skript ausgeführt wird, bevor es einheitlich ausgibt。它existieren实现长时间运行的任务、Echtzeit-Protokollanzeige、或者进度条更新时非常有verwenden。Jedoch,Viele Entwickler werden auf ein Problem stoßen:明明调verwenden了 <code></span><span><span class="hljs-title function_ invoke__">flush</span></span><span>()

2. Webserverpufferung

Auch wenn die PHP -Ausgabe gespült wurde, können Webserver (wie Apache, Nginx) die Ausgabe weiterhin zwischenspeichern, bis der Puffer voll ist oder das Skript vorbei ist. Gemeinsame Situationen:

  • Apache : mod_deflate oder mod_gzip -Komprimierungsmodule Verzögerungsausgang. Sie können versuchen, die Komprimierungsfunktion dieser Module auszuschalten oder die Konfiguration anzupassen.
  • Nginx : Die GZIP -Komprimierung ist standardmäßig aktiviert, und Proxy_Buffering ist vorhanden, was auch eine sofortige Ausgabe verhindern kann. Proxy_Bufferen; kann im Standortblock eingestellt werden.

3. Browserverhalten

Einige Browser warten auf eine bestimmte Datenmenge, bevor sie die Seite rendern, insbesondere wenn die Ausgabe sehr klein ist. Häufige Praktiken:

  • Senden Sie genügend Whitespace -Zeichen, bevor Sie den Inhalt ausgeben, um den Browser -Trigger -Rendering zu lassen.
  • HTTP-Header vor Ausgabe senden: Header ('Inhaltscodierung: Keine'); verhindert eine durch Kompression verursachte Verzögerung.

4. umfassendes Beispiel
<span><span><?php</span></span><span>
</span><span><span>// PHP -Ausgangspufferung deaktivieren</span></span><span>
</span><span><span>while</span></span> <span>(</span> <span><span class="function_ invoke__">ob_get_level</span></span> <span>()></span> <span><span>0</span></span> <span>) {
    </span><span><span class="function_ invoke__">ob_end_flush</span></span> <span>();
}

</span><span><span>Echo</span></span><span> </span><span><span class="function_ invoke__">str_repeat</span></span> <span>(</span> <span><span>""</span></span> <span>,</span> <span><span>1024</span></span> <span>);</span> <span><span>// Senden Sie genügend Daten, um das Browser -Rendering auszulösen</span></span><span>

</span><span><span>für</span></span> <span>(</span> <span><span>$ i</span></span> <span>=</span> <span><span>1</span></span> <span>;</span> <span><span>$ i</span></span> <span><=</span> <span><span>5</span></span> <span>;</span> <span><span>$ i</span></span> <span>++) {
    </span><span><span>Echo</span></span><span> </span><span><span>"Verarbeitungsschritt <span>$ ich</span></span></span> <span>...<br> \N";
    </span><span><span class="function_ invoke__">Flush</span></span> <span>();
    </span><span><span class="function_ invoke__">Schlaf</span></span> <span>(</span> <span><span>1</span></span> <span>);
}
</span><span><span>?></span></span><span>
</span></span><p>Mit der obigen Methode können Sie sicherstellen, dass <span class="fun">Flush ()</span> in den meisten Fällen normalerweise wirksam werden kann. Bitte denken Sie jedoch daran, dass die Ausgabelatenz das Ergebnis des kombinierten Einflusses mehrerer Links von PHP, Webserver und Browser sein kann und überprüft werden muss.</p> <span><span><?php</span></span><span>
</span><span><span>// Das Ende des Artikels hängt das Ende des Inhalts nicht mit dem Inhalt zusammen</span></span><span>
</span><span><span>Echo</span></span><span> </span><span><span>"Der Artikel ist geladen. \ N"</span></span> <span>;</span> <span><span>?></span></span><span>
</span></span></div></div>