Hallo Dennis,
Also ist sowohl SIGTSTP als auch SITSTOP dafür gedacht, einen Prozess zu stoppen? Dann frage ich mich mal wieder, warum es da beide Signale gibt - in diesem Fall ist es natürlich praktisch, aber wurde das auch dafür erfunden?
SIGTSTP kann abgefangen werden und reagiert, wenn im Terminal Ctrl+Z (oder die halt eingestellte Tastenkombination) gedrückt wird. SIGSTOP wird genauso wie SIGKILL direkt vom Kernel interpretiert und kann dagegen nicht abgefangen werden.
Und mit welchem Signal kann ich einen wartenden, also pausierten PHP-Prozess wieder ans Laufen bringen?
SIGCONT. Das lässt ihn allerdings im aktuellen Status weiterlaufen, d.h. wenn er vorher im Hintergrund lief, tut er das weiterhin, sonst im Vordergrund. Um einen Prozess in den Hintergrund/Vordergrund zu schieben, braucht's Jobkontrolle - diese Aufgabe übernimmt i.d.R. die Shell, allerdings weiß ich nicht, ob man das mit PHP (oder überhaupt von einem Prozess aus, der nicht Session-Leader ist) auch machen resp. beeinflussen kann - müsste ich mal nachlesen.
Dabei stelle ich mir gerade eine Frage: Was ist von der Performance her besser, einen Prozess mit sleep() für X Sekunden schlafen zu legen oder den Prozess zu stoppen und per vorher gesetztem Cronjob bzw. at oder wie das heißt (Befehl zu festgeleger Zeit einmalig ausführen) den Prozess wieder fortzuführen? Kurz um, belastet sleep() den Server?
Der Cronjob dürfte "teurer" sein, da dafür ein eigenständiger Prozess erzeugt werden muss. sleep() belastet den Server überhaupt nicht, da der Prozess solange sleep() läuft keine Rechenzeit abbekommt.
Viele Grüße,
Christian
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup