stream-ende

thomy800

Erfahrenes Mitglied
Hi,

Ich habe ein Script geschrieben, wo viele berechnungen gemacht werden müssen, die aber dem User nicht mehr angezeigt werden. D.h. ich will ihm nur die fertigen Informationen zurückschicken und den Daten-Stream für den User beenden, aber das PHP-Script soll dann noch weiter arbeiten (was noch einige Sekunden dauert). Wie kann ich das lösen? Gibts eine Funktion, "stream-ende"?

mfG thomy

PS: die Daten, die der User kriegt, ist ein Bild. Momentan, habe ich die Bildausgabe (z.B. ImageGIF) vor den Berechnungen, die so lange dauern. Im Browser sieht das aber so aus, dass ein großteil des Bildes kommt, aber der Rest nciht übertragen wird, bis das Script fertig durchgelaufen ist...
 
Hm. Blick da nicht ganz durch.
Also du könntest einen flush machen um die Daten zu senden und ignore_user_abort(), damit das Script selbst dann weiterläuft wenn der Benutzer auf abbrechen klickt, bis dahin scheint der Browser aber noch zu laden.
Oder du schreibst es in eine Liste, die per CronJob abgearbeitet wird.

Was hast du denn genau vor nach dem Bild?
 
Also, das Bild wird zeitlich aktualisiert. Allerdings ändert sich es nur langsam. Das berechnen des Bildes dauert allerdings ne Weile. Dem User gebe ich daher immer eine gesppeicherte ältere Version. Wenn dann ein User das Bild abruft, wird ihm das alte Bild geliefert und danach das neue Bild (für den nächsten User) berechnet und gespeichert.
Am besten wäre natürlich, wenn ein unabhängiges Programm ständig das BIld aktualisiert.. wüsste aber nicht wie.

ignore_user_abort() werde ich übernehmen, hab ich noch nicht drin :)
 
Für solche Applikationen solltest du dir eine andere Technik als reines PHP => HTML suchen. Java in Kombination mit Flash (AMF) könnte dir weiterhelfen. Es gab auch Bindings von PHP => Flash. Aber mit reinem HTML kommst du da meiner Meinung nach nicht weit.
 
Zurück