HTTP-Request: Abbruch

FrankWST

Erfahrenes Mitglied
Hallo,

wenn ich einen http-request als "Long poll" starte, gehe ich recht in der Annahme, dass dieser automatisch abgebrochen wird, wenn die Seite neu geladen wird (z.B. durch Anklicken eines Links)?
Oder muss man einen solchen manuell "abwürgen"?

Danke,
Frank
 
Man kann den Http-Request auch mit
Code:
XMLHttpRequest.abort();
abbrechen.
Dies bewirkt aber nur, dass die Verbindung vom Client zum Server für diesen Request abgebrochen wird. D.h. die Callback-Methode wird nicht mehr vom Server aufgerufen.

Aber der Thread, der (ausgelöst durch den Request) auf dem Server kontinuierliche Überprüfungen macht, läuft immer noch weiter! (Zur Erinnerung: Es geht um einen "Long Poll").
Das gilt auch für den Fall, dass der user die Seite verlässt.

Diesen Thread möchte ich aber auch abbrechen, um nicht einen Haufen Zombie-Threads auf dem Server zu haben.

Ich recherchiere weiter...

Gruß,
Frank
 
Zuletzt bearbeitet:
Mmhh, das ist ungewöhnlich, eigentlich sollte ein Skript beendet werden, sobald die Verbindung abgebrochen wurde.

Probiere mal, ob dir [phpf]connection_aborted[/phpf] weiterhilft.
 
connection_aborted() als auch connection_status() liefern immer 0. Auch wenn der Browser schon längst geschlossen wurde!

:confused:

Sind das etwa aktuelle Bugs in PHP?

Siehe hier:
http://bugs.php.net/bug.php?id=30301

(!)

Ja, das stimmt tatsächlich: Dieser Bug ist immer noch aktuell!
Durch die im Bug und bei den Manual-Einträgen zu connection_aborted() bzw. connection_status() zu findenden Kommentaren bei http://www.php.net kommt man mühsam weiter...
:(
 
Hallo,

dazu noch eine Überlegung:
Angenommen der Request würde tatsächlich mit dem Schliessen des Browser-Fensters sofort abgebrochen. Hätte das nicht fatale Auswirkungen?

Beispiel:
Der Benutzer löst eine Aktion auf dem Server aus, die ein wenig Zeit benötigt (z.B. Werte berechnen und in eine Datenbank schreiben). Dann würde dieser Ablauf doch mittendrin unterbrochen und nicht zu Ende geführt werden!?

Muss man solche Fälle abfangen?
P.S. Diese Anmerkung hat jetzt eigentlich nichts mehr mit JS/Ajax zu tun, eher mit PHP
 
Zuletzt bearbeitet:
Hallo,

dazu noch eine Überlegung:
Angenommen der Request würde tatsächlich mit dem Schliessen des Browser-Fensters sofort abgebrochen. Hätte das nicht fatale Auswirkungen?

Beispiel:
Der Benutzer löst eine Aktion auf dem Server aus, die ein wenig Zeit benötigt (z.B. Werte berechnen und in eine Datenbank schreiben). Dann würde dieser Ablauf doch mittendrin unterbrochen und nicht zu Ende geführt werden!?

Muss man solche Fälle abfangen?
P.S. Diese Anmerkung hat jetzt eigentlich nichts mehr mit JS/Ajax zu tun, eher mit PHP

Irgendwie beunruhigt mich das immer noch :confused:
Was haltet Ihr davon!?

Gruß, Frank
 
Zurück