Hallo eddi,
hier selbes Bild. PHP-Prozesse werden, wenn ein SignalHandler eingerichtet ist, nicht automatisch gestoppt.
Naja, wenn SIGTERM abgefangen wird, wird er natürlich nicht beendet, es ging hier darum, wenn SIGTSTP abgefangen wird, ob er dann nicht hinterher doch noch gestoppt wird - und das wird er aber auch nicht, hab's soeben getestet.
Ich habe Dein Beispiel mal erweitert, dass der PHP-Prozess sich automagisch selbst stoppt, sobald SIGTSTP abgefangen wird.
<?php
declare(ticks = 1);
function handleSignals($signal){
echo "$signal\n";
if ($signal == SIGTSTP)
posix_kill(getmypid(),SIGSTOP);
}
pcntl_signal(SIGTERM,"handleSignals");
pcntl_signal(SIGTSTP,"handleSignals");
for($i=0;$i<5;$i++){
posix_kill(getmypid(),SIGTERM);
sleep(2);
}
?>
Wenn Du auf UNIX-Plattformen Ctrl+Z drückst, während das läuft, dann wird SIGTSTP abgefangen (sieht man an der Ausgabe), der Prozess wird jedoch hinterher gestoppt, da er sich selbst am Ende des Signalhandlers SIGSTOP schickt.
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
"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