Hello,
du solltest einfach set_time_limit(0); nicht vergessen...
Dann sollte man sich aber eine Job-Control aufbauen.
Man holt sich mittels getmypid() http://de.php.net/manual/de/function.getmypid.php holt man sich die ID des angestoßenen Prozesses und mwrk sie sich in einer DB oder anderem Permanentspeicher.
Mit ignore_user_abort() http://de.php.net/manual/de/function.ignore-user-abort.php wird dafür gesorgt, dass der Prozess auch nach einem Client-Ausstieg beendet wird. (da war doch mals was: Es gibt immer Leute die behaupten, dass HTTP verbindungslos ist... Was nützt das aber, wenn die Verbinung in anderern Protokollschichten wieder hinzugefügt wird...)
Allerdings muss man beachten: Wenn PHP als Server-Modul läuft, ist es nicht garantiert, dass Scripts unter verschiedenen PIDs laufen.
Bei "meinen" Servern hat das aber noch nie Probleme bereitet.
Wenn die Prozesse sich nun plötzlich stapeln, kann man so zumindest feststellen, ob es sich um unbeendete "Spammailer" handelt.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau