Sönke Tesch: HTTP-Request abbrechen

Beitrag lesen

aber wie geht das nun praktisch?
Was muß ich in Javascript tun um dem Server den Abbruch zu signalisieren.

Garnichts. Sobald der Anwender Stopp drückt oder eine andere Seite auswählt, bricht der Browser die Verbindung in der Regel selbsttätig ab.

Ein Klick auf den Stop-Knopf des Browsers verhindert zwar das der Browser die Seite weiter lädt (bzw. der Befehl "stop()" für NS), aber auf dem Server arbeitet das CGI-Script trotzdem weiter - wird also vom Web-Server nicht automatisch "gekillt".

Nein, wie ich bereits sagte, muß Dein Skript (auf Serverseite) auf diesen Verbindungsabbruch reagieren, es wird _nicht_ einfach vom Server über die Klippen gestoßen.

Kann ich im Script den Abbruch-Wunsch des Browsers irgendwie abfragen und mich dann selbst beenden?

Wenn Dein Server Dir dieses Ereignis mitteilt, ja. Ob das beim Apache im normalen CGI-Modul der Fall ist, weiß ich nicht, daß müsstest Du ausprobieren (siehe unten). Steckt das FastCGI-Modul im Server, wird der Verbindungsabbruch signalisiert.

In der FAQ zu FastCGI, auf die ich bereits hingewiesen hatte (http://www.fastcgi.com/docs/faq.html#Signals), heißt es dazu:

"[Das Signal] PIPE occurs when trying to write/print to a file
   descriptor that has been closed."

Mit "file descriptor" ist die Standardausgabe gemeint, die bei CGI-Anwendungen in Richtung Apache zeigt. Wird die Verbindung Client<->Apache abgebrochen, wird auch die Standardausgabe (also CGI->Apache) durch den Server geschlossen.

Weiterhin:

"Ideally, [PIPE] should result in an early abort of the request
   handling within your application and a return to the top of the
   FastCGI accept() loop."

Dort ist auch beschrieben, wie man in Perl auf Signale reagiert.

Du solltest also erstmal schauen, ob FastCGI in Deinem Webserver steckt, und wenn nicht, den Serverbetreiber bitten, dieses Modul einzufügen.
Du kannst natürlich auch mal probieren, ob Du dieses Signal auch unter "normalen" CGI-Umständen erhälst.

Gruß,
  soenk.e