2009-04-29 6 views
4

Ich habe einen Prozess, den ich im Hintergrund einer Seite ausführen möchte. Der Prozess wird eine Weile dauern, sagen wir mal ein paar Minuten.AJAX (Prototyp/PHP) erhalten teilweise Statusupdates während Skriptausführung

Ich habe es eingerichtet, so dass von der Seite kann ich auf eine Schaltfläche klicken, um den Prozess zu starten, ein wenig warten und dann wird es fertig und ich kann die Seite aktualisieren, die mich benachrichtigt, dass der Prozess erfolgreich ausgeführt wurde. Ich mache das mit Prototyp und PHP.

Was ich tun möchte, ist Status-Updates während der Prozess läuft. Es könnte also die Seite aktualisieren, die mich darüber informiert, wie viele Datensätze bisher verarbeitet wurden, oder eine Statusleiste oder etwas Ähnliches aktualisieren.

Ist das möglich? Ich bin kein großer JS - Guru und kann die grundlegende Funktionalität, die ich bereits beschrieben habe, tun, aber ich frage mich, ob es möglich ist, es zu erweitern, um dieses kleine Extra zu machen, da ich kein Glück gehabt habe, durch die Welt zu gucken Dokumente

Antwort

2

Mit nur PHP werden Sie am Ende viel Polling tun. Sie müssen Ihren lang andauernden Prozess im Hintergrund erstellen und zum Beispiel in eine Datei-Datenbank schreiben, wo der Fortschritt ist.

Der Browser kann dann alle x Sekunden ein anderes PHP-Skript aufrufen, das mit diesem Status zurückmeldet.

Polling saugt zwar, aber das ist, was Sie stecken, mit PHP.

+0

So fork den Prozess, und dann muss der Prozess eine Datei/db aktualisieren ... ok das könnte funktionieren. Du sagst, dass ich bei PHP genau das bin, woran ich festhalte, ich meine, ich könnte dieses spezielle Modul in Python oder Perl schreiben oder was auch immer, was wären andere Optionen, die kein Polling erfordern würden? Nur neugierig. –

+0

Eigentlich .. Wenn Sie durch CGI/mod_php oder etwas anderes laufen .. nicht verzweigen! Starten Sie einfach einen neuen Prozess. (Obwohl technisch ist das auch Forking, wollte aber auf die Unterscheidung hinweisen). – Evert

Verwandte Themen