Suche Denkansätze für Operationen mittels AJAX

Chaosengel_Gabriel

Erfahrenes Mitglied
Hallo liebe Tutorials-Gemeinde :D
Ich hoffe ich bin hier im richtigen Bereich mit meiner Anfrage, ich bitte ggf um Verschiebung.
Also...
Ich möchte mittels AJAX einen serverseitigen Prozess (PHP) starten...
Funktioniert auch problemlos soweit.
Ich möchte das nun aber noch um einige Features erweitern, wo mir ne Idee fehlt wie ich es lösen könnte.
1. Würde ich den Prozess (der ne gute Std brauch) gerne starten und auch nach schließen des Browsers weiter arbeiten lassen.
2. Würde ich gerne eine dynamische Fortschrittsanzeige ausgeben.
3. Würde ich den Prozess gerne abbrechen können.

Bis lang bin ich mit meinen Überlegungen zu folgenden Ideen gekommen:
zu 1. absolut keinen Plan.
zu 2. während des Prozesses einen Fortschrittseintrag in die DB schreiben, welchen ich mit ner seperaten AJAX Abfrage auslese und die Progressbar anzeige.
zu 3. mittels AJAX Request einen DB Eintrag erzeugen, den der Prozess regelmäßig prüft und sich entsprechend verhält.

Wie gut sind die Ideen? Wo sollte ich vllt umdenken? Oder habt ihr vllt sogar noch bessere Ansätze...

PS.: Da ich kein JS Fachmann bin, stütze ich mich dabei auf JQuery/Bootstrap :)
 
Hi

2 und 3 klingt gut so,
vorausgesetzt beim Abbrechen (bzw. Steuern generell) bei Punkt 3
ist es nicht schlimm, wenn das Programm verzögert reagiert.

Zu 1 ... ist das nur für dich bzw. wenige Leute oder viele?
Arbeitsintensiv oder muss das Programm lange auf irgendwas warten?
Hast du genug Rechte/Möglichkeiten am Server (zB. PHP-Configs wie max_execution_time etc.,
ggf. Funktionenverbote aufheben, evt. wären auch Cronjobs ganz hilfreich...)
 
Wenn nur wenige Leute. Rechte am Server sind uneingeschränkt, weil das ganze für den Betrieb auf localhost mittels XAMPP gedacht ist. Dementsprechend ist die max_execution_time bereits auf unbegrenzt gestellt ^^
Der Prozess ist sowohl arbeits- als auch zeit-intensiv, da mehrere Anfragen an einen weiteren Server geschickt werden und die Antworten entsprechend ausgewertet.
An Cronjobs hab ich selber schon gedacht, aber das manuelle starten ist essenziell.

Mit nem asynchronen AJAX Request läuft es ja wunderbar soweit, die Seite ist weiter nutzbar, da der Browser "nebenbei" auf den Abschluß des Requests wartet. Allerdings würde beim Schließen des Browsers der Request abgebrochen werden und somit der PHP Prozess beendet, oder nicht?
 
Dann wirds ja gar nicht so schwer.

Also zu den Zeiten: max_execution_time ist ok, dazu fehlt aber
noch max_input_time bei PHP und Timeout bei Apache.

Was das Browserschließen etc. angeht, das PHP-Programm wird zunächst einmal
zumindest solang weiterlaufen bis es eine Ausgabe Richtung Browser versucht,
dann erkennen dass die Verbindung zu ist und abgewürgt werden.
Da das lang laufende Script, per Ajax angestartet, vermutlich keine direkte Ausgabe
hat sollte das kein Problem sein. Um auf der sicheren Seite zu sein kann man am
Anfang vom Code aber noch ignore_user_abort(true); machen.

Ein Punkt noch, der aber vermutlich kein Problem ist: Der Clientbrowser hat
überlicherweise auch ein Timeout, wird also irgendwann mit dem Ajax-warten
aufhören, auch wenn man ihn nicht zumacht. Da man aber sowieso kein Ergebnis
erwartet und der Status mit separaten Abfrage (in Verbindung mit DB usw.) ermittelt
wird sollte das nicht stören.
 

Neue Beiträge

Zurück