Mein Skript besteht aus zwei Teilen. Der erste Teil generiert HTML-Seite. Der zweite Teil lädt eine Ressource aus dem Netz und speichert sie in einer Datei. Das Laden ist ein langer Vorgang und kann bis zu 10 Sekunden dauern. Der erste und der zweite Teil sind völlig unabhängig (das Laden hat keinen Einfluss auf das Aussehen der Seite).PHP: Wie Seite anzeigen, bevor das Skript beendet ist?
Am Ende des ersten Teils rufe ich flush(), das macht die Seite sofort angezeigt.
Der eingebettete SWF-Film wird jedoch in diesem Moment nicht angezeigt.
SWF ist das Schlüsselelement der Seite und muss so schnell wie möglich angezeigt werden. Es ist in die Seite mit SwfObject-Bibliothek eingebettet. Und das Problem ist, dass SwfObject beginnt, SWF auf "onLoad" -Ereignis der Seite zu öffnen.
Aber "onLoad" Ereignis kommt am Ende des zweiten Teils. Das ist "onLoad" kann in 10 Sekunden auftreten. Also trotz flush() call muss der User 10 Sekunden vergeblich warten.
Ist es möglich, die Aufgabe auf der PHP-Seite zu lösen? Ist es möglich, "loading" Task (der zweite Teil) in einem separaten Prozess auszuführen? Ist es möglich, dem Browser zu sagen, bevor der zweite Teil gestartet wird, dass die Seite erneut angezeigt wird und Sie das "onLoad" -Ereignis übertragen können.
Danke für das Lesen dieser sehr langen Geschichte.
Was ist, wenn JS deaktiviert ist? – Wookai
Dann schlage ich definitiv vor, den zweiten Teil in einem getrennten Prozess entweder mit pcntl-Fork oder System auszuführen. –