Letztlich kommt es darauf an. Die meisten PHP-Hosting-Mechanismen, die ich verwendet habe, streamen die Antwort in Stücken, wie sie vom Skript empfangen wird, und lassen die Content-Length
Kopfzeile vollständig zu löschen (da dies nicht im Voraus bekannt ist). Sie können die Antwort mit flush()
in regelmäßigen Abständen, um den Server zu zwingen, das, was er bisher gepuffert hat, an den Client zu übertragen.
Wenn Sie also Dinge tun wollen, die viel Zeit in Anspruch nehmen und die Seite im Voraus gerendert werden soll, wäre der richtige Weg, so viel von der Seite wie möglich auszugeben, indem Sie flush()
und erledigen Sie dann Ihre teuren Aufgaben. Achten Sie nur darauf, dass Sie nicht länger brauchen als die angegebene maximale PHP-Skriptdauer.
Okay, diese Erklärung ist zugegebenermaßen etwas zu vereinfacht:
Les Content-Length
Header kann unter Umständen tatsächlich gesendet werden. Wenn z. B. die Antwort des Skripts kleiner ist als der PHP-Puffer für gesendete Daten und/oder wenn das Skript weniger als eine bestimmte Zeit zur Ausführung benötigt, weiß der Server genau, wie lang der Inhalt ist und kann den Längen-Header hinzufügen.
Weiter, flush()
darf nicht wirklich etwas tun . Dies hängt von Ihrer Serverkonfiguration und anderen Faktoren ab. Beachten Sie insbesondere diese Warnungen in der Dokumentation zum serverseitigen Verhalten:
flush() kann das Pufferungsschema Ihres Webservers nicht außer Kraft setzen und hat keinen Einfluss auf die clientseitige Pufferung im Browser. Es hat auch keinen Einfluss auf den Pufferungsmechanismus der PHP-Ausgabe im Userspace. Das bedeutet, dass Sie sowohl ob_flush() als auch flush() aufrufen müssen, um die ob-Ausgabepuffer zu leeren, wenn Sie diese verwenden.
Einige Server, insbesondere unter Win32, puffern die Ausgabe Ihres Skripts bis zur Beendigung, bevor sie die Ergebnisse an den Browser übermitteln.
Server-Module für Apache wie mod_gzip können eigene Pufferungen vornehmen, die dazu führen, dass flush() die Daten nicht sofort an den Client sendet.
Mit anderen Worten: Test, Test, Test. Stellen Sie sicher, dass der Webserver das gewünschte Verhalten nicht beeinträchtigt. Konfigurieren Sie den Webserver bei Bedarf neu.