Hallo Henry,
dein Beispiel funktioniert bei mir (mein Server, mein Browser) mit den gewollten Verzögerungen:
<?php
ob_end_flush();
echo '<h1>test1</h1>';
sleep(1);flush();
echo '<h1>test2</h1>';
sleep(1);flush();
echo '<h1>test3</h1>';
sleep(1);flush();
?>
Merkwürdigerweise funktioniert es mit meinem Konzept nicht. Ich sende eine Mini-HTML-Seite an den Browser und erzeuge dann mit Javascript ein <table>
aus knapp 500 csv-Zeilen, das ich nachträglich einfüge.
Wenn ich die Javascript-Zeit stoppe, um den <table>...</table>
String zu erzeugen, ergeben sich so um die 200 Millisekunden. Das Einfügen benötigt weitere 700 ms:
document.getElementById("adressliste").innerHTML = html_string;
Obwohl die HTML-Seite also komplett beim FF ist, zeigt der nichts an, solange JS läuft.
Mit einem Trick habe ich es dann doch hinbekommen. Die Table-Erzeugung in eine function gepackt und die mit Zeitverzögerung aufgerufen:
//erzeugeTable();
window.setTimeout( erzeugeTable, 100);
Jetzt wird der Kopf der Seite wie gewünscht angezeigt und ca. 2 sec später erscheint die Tabelle. Warum das 2 sec sind und nicht knapp 1 sec JS-Durchlaufzeit, weiß ich nicht. Ach ja, nachdem JS fertig ist, muss der Browser das ja noch umsetzen.
Danke für den Tipp, der mich dazu brachte, noch mal zu experimentieren.
Linuchs