Aktueller Standort: Startseite> Neueste Artikel> Wie kann ich Flush () verwenden, um Echtzeitinhalteausgaben zu erzielen? PHP Practical Skills Analysis

Wie kann ich Flush () verwenden, um Echtzeitinhalteausgaben zu erzielen? PHP Practical Skills Analysis

gitbox 2025-08-18
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Teil des Codes hat nichts mit dem Inhalt des Textes zu tun,Zum Beispiel nur Demonstration</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Beginnen Sie mit der Ausführung des Skripts...&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Ausgabeinhalt vorbereiten...&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
 * Titel:Wie man es benutzt flush() Echtzeitinhaltsausgabe?PHP Analyse der praktischen Fähigkeiten
 *
 * existieren PHP Mitte,Standardmäßig,Der Webseiteninhalt wird gleichzeitig an den Client -Browser gesendet, bis das Skript ausgeführt wird.。
 * Dies bedeutet, dass Ihr Programm für lange Zeit ausgeführt werden muss,用户existieren等待时看不到任何反馈,Schlechte Erfahrung。
 * Dieses Problem zu lösen,PHP Bereitgestellt flush() Funktion,Der Inhalt des Puffers kann sofort an den Browser gesendet werden,Inhalte implementieren“Echtzeitausgabe”。
 *
 * Dieser Artikel wird ausführlich vorgestellt flush() Wie man benutzt,并Kombiniert实战技巧帮助你existieren项目Mitte提升用户体验。
 */</span>

</span><span><span class="hljs-comment">// 1. flush() Das Grundprinzip</span></span><span>
</span><span><span class="hljs-comment">// flush() Funktion用于强制将 PHP Der Inhalt des Ausgangspuffers wird an den Client gesendet。</span></span><span>
</span><span><span class="hljs-comment">// Aber,Es sollte beachtet werden,flush() Es wird nicht gelöscht PHP Ausgangspuffer,Es wird nur versucht, den aktuellen Pufferinhalt auf den Client zu bringen。</span></span><span>

</span><span><span class="hljs-comment">// 2. Kombiniert ob_flush()</span></span><span>
</span><span><span class="hljs-comment">// existieren实际应用Mitte,Weil PHP Die Ausgabepufferung ist standardmäßig aktiviert(Output Buffering),Getrennt genannt flush() Wahrscheinlich nicht funktionieren。</span></span><span>
</span><span><span class="hljs-comment">// daher,Allgemeine Zusammenarbeit ob_flush() verwenden,Zuerst klar PHP Puffer,再verwenden flush() Drücken Sie zum Browser。</span></span><span>
</span><span><span class="hljs-comment">//</span></span><span>
</span><span><span class="hljs-comment">// Beispiel:</span></span><span>
</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> &lt;= </span><span><span class="hljs-number">5</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aktueller Fortschritt:1. <span class="hljs-subst">$i</span></span></span><span> Schritte ausgeführt...&lt;br&gt;";
    </span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>();
    </span><span><span class="hljs-title function_ invoke__">flush</span></span><span>();
    </span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>);  </span><span><span class="hljs-comment">// Simulation zeitaufwändiger Betrieb</span></span><span>
}

</span><span><span class="hljs-comment">// 3. Der Einfluss des Schließens von Browser und Server -Cache</span></span><span>
</span><span><span class="hljs-comment">// Der Cache-Mechanismus von Browsern und Servern kann die Echtzeitanzeige von Inhalten behindern。</span></span><span>
</span><span><span class="hljs-comment">// Empfohlene Einstellungen HTTP Deaktivieren Sie den Cache am Kopf:</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Cache-Control: no-cache"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Pragma: no-cache"</span></span><span>);

</span><span><span class="hljs-comment">// 4. Schließung gzip Kompression</span></span><span>
</span><span><span class="hljs-comment">// Wenn der Server aktiviert ist gzip Kompression,flush() Möglicher Fehler,因为Kompression后内容必须完整才能解压。</span></span><span>
</span><span><span class="hljs-comment">// 可以尝试existieren PHP 配置或服务器配置MitteSchließung gzip,或者针对Echtzeitausgabe页面禁用。</span></span><span>

</span><span><span class="hljs-comment">// 5. verwenden隐式刷新</span></span><span>
</span><span><span class="hljs-comment">// passieren ini_set('implicit_flush', 1) Implizite Aktualisierung kann aktiviert werden,PHP existieren每次输出后自动调用 flush()。</span></span><span>
</span><span><span class="hljs-comment">// 也可verwenden ob_implicit_flush(true) Den gleichen Effekt erzielen。</span></span><span>

</span><span><span class="hljs-comment">// 6. Achten Sie auf das Ausgangsformat und den Inhalt</span></span><span>
</span><span><span class="hljs-comment">// Der Browser benötigt genügend Inhalt, um das Rendering auszulösen,Es wird empfohlen, genug auszugeben oder es mit einigen Leerzeichen zu füllen。</span></span><span>

</span><span><span class="hljs-comment">// 7. 实战Beispiel总结</span></span><span>
</span><span><span class="hljs-comment">// Kombiniert上述方法,完整Beispiel如下:</span></span><span>

<span class="hljs-comment">/*
&lt;?php
header("Content-Type: text/html; charset=utf-8");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

ob_implicit_flush(true);
while (</span></span><span><span class="hljs-doctag">@ob</span></span><span>_end_flush()); // Schließung所有输出缓冲

for ($i = 1; $i &lt;= 10; $i++) {
    echo "Zeitplan:$i / 10&lt;br&gt;";
    echo str_repeat(' ', 1024); // Ausgabe ausfüllen,Helfen Sie dem Browser, sofort zu rendern
    flush();
    sleep(1);
}
?&gt;
*/

</span><span><span class="hljs-comment">// passieren以上方式,Kann das Warteerlebnis für Benutzer erheblich verbessern, während Skripte lange ausgeführt werden,Sehen Sie die Inhaltsaktualisierungen in Echtzeit an。</span></span><span>

</span><span><span class="hljs-comment">// Abschluss</span></span><span>
</span><span><span class="hljs-comment">// flush() existieren PHP 实战Mitte是一个非常实用的技巧,尤其适合Zeitplan显示、日志Echtzeitausgabe等场景。</span></span><span>
</span><span><span class="hljs-comment">// Verstehe, wie es funktioniert,Konfigurieren Sie den Server ordnungsgemäß und PHP aufstellen,Nur durch Erreichen des maximalen Effekts。</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>