2008-09-25 4 views

Antwort

1

Sie flush() in PHP nennen kann, aber es gibt einige andere Orte, die die Ausgabe (zum Beispiel auf dem Webserver) gehalten werden kann. Wenn Sie die Ausgabepufferung verwenden, müssen Sie auch ob_flush() aufrufen.

Sie können auch feststellen, dass einige Browser wird die Seite nicht machen, bis der HTML gültig ist, das wird nicht bis alle Tags geschlossen sind (wie Körper, html)

7
function printnow($str, $bbreak=true){ 
    print "$str"; 
    if($bbreak){ 
     print "<br />"; 
    } 
    ob_flush(); flush(); 
} 

Offensichtlich wird sich verhalten nicht, wenn Sie es komplizierte Objekte (oder zumindest diejenigen, die __toString nicht implementieren) passieren, aber Sie bekommen die Idee.

0

flush() ist ein Teil der Antwort. Zumindest bis vor einem Jahr war die Verwendung von Flush in Safari jedoch unzuverlässig. Abhängig von Ihrem Szenario würde ich Lösungen mit Javascript suchen. Vielleicht haben die verschiedenen Implementierung von Fortschrittsbalken Code/Ideen, die Sie recyceln können.

2

Wie andere darauf hingewiesen haben, gibt es Orte, wo Dinge neben PHP (z. B. der Webserver oder der Client-Browser) hängen können. Wenn Sie wirklich sicherstellen möchten, dass Informationen angezeigt werden, sobald sie verfügbar sind, benötigen Sie wahrscheinlich eine AJAX-basierte Lösung. Sie haben ein PHP-Skript, das die Anzeige verarbeitet, und ein anderes, das Berechnungen durchführt, und das Anzeigeskript veranlasst, AJAX-Anfragen an die andere zu senden. jQuery hat einige ziemlich einfache AJAX-Funktionen, die Ihnen dort helfen können.

Sie möchten auch ein Fallback haben, falls der Browser JavaScript nicht unterstützt/deaktiviert hat, das nur die Standardseite wäre, die möglicherweise bis zum Ende keinen Inhalt anzeigt.

0

Ich würde vorschlagen, AJAX zu verwenden.

1

Aktivieren Sie implizite Flush wie blueyed sagte sollte den Trick tun, da es Flush nach jedem Echo aufruft jedoch einige Browser erfordern auch No-Cache-Header gesetzt werden. Hier ist was ich benutze. Ihre Laufleistung kann je nach Browser variieren.

header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past 
header('Pragma: no-cache'); 
Verwandte Themen