TS: PHP während der Ausführung stoppen

Beitrag lesen

Hello Martin,

Wenn man das sowieso tun muss, dann kann man aber auch gleich auf eine zyklische Abfrage von connection_aborted() setzen und auf das Rumhampeln mit PIDs, Signals und kill-Aufrufen verzichten.

Das gilt nur für den Fall, dass man die Connection die gesamte Scriptlaufzeit halten will und kann. Das halte ich bei Dauerläufern, die mehr als 30 Sekunden (Standard) laufen dürfen sollen für unpraktisch. Außerdem hält nicht jeder Browser die Connection beim Tab-Wechsel. Ich denke da nur an meine Erfahrungen mit dem Tablet.

Und die sind leider nicht nur akademischer Natur :-(

Es ist mMn daher immer besser, Dauerläufer sofort in den Hintergrund zu stellen und mittels einer Statusseite den Zustand und das Ergebnis abfragbar zu machen. Das kann die bei Bedarf auch für mehrere solcher Prozesse auch mit AJAX tun. Das entspricht auch eher dem Schema "Client-Sever mit HTTP/s".

Weiteren Einfluss hat auch, ob du die Ausgabebuffer ausgeschaltet hast beim Scriptstart.

Das hat einen Einfluss darauf, ob der PHP-Prozess mit dem Script vom OS gewaltsam beendet wird, nachdem die Verbindung getrennt wurde. Aber auch nur dann, wenn das Script so freundlich ist, etwas auf stdout zu schreiben. Tut es das nicht, ist auch die Pufferung egal.

Es ging darum, warum der Prozess noch nicht wieder freigegeben wurde, obwohl der Browser zugeklappt wurde. Das kann einerseits mit dem Schalter für User-Abort und andererseits damit zusammenhängen, dass der Puffer - je nach eingestellter Größe - noch nicht wieder voll genug ist.

Außerdem buffered z. B. der Apache auch noch selber 4kB (32-Bit-System) oder 8kB (64-Bit-System). Das kann man aber auch ausschalten (und konfigurieren?).
Der Buffer ist also auch noch zweistufig. Und bitte die eventuellen Proxies nicht vergessen :-)

Glück Auf
Tom vom Berg

--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.