Hi Christian,
UNIX-Signale sind asynchron. D.h. sie können zu einem beliebigen Zeitpunkt ausgeführt werden. Auch, wenn gerade ein Stück C-Code von PHP ausgeführt wird, der "kritisch" ist. Deswegen kann PHP nicht direkt asynchron auf Signale reagieren, da der Zustand des Programms sonst u.U. nicht richtig definiert wäre. Also implementiert PHP Signalbehandlung wohl so, dass im C-Signalhandler, den PHP verwendet, bloß ein Flag gesetzt wird. PHP wird dieses Flag dann regelmäßig auswerten. Diese Auswertung geschieht immer dann, wenn ein Tick vorbei ist, PHP verwendet sozusagen eine interne Tick-Funktion, um Signale zu realisieren. Zu Tick-Funktionen siehe: http://de.php.net/manual/en/control-structures.declare.php#control-structures.declare.ticks
Sehr schön anschaulich erklärt - hört sich auch sehr logisch an. Es scheint dann aber so zu sein, das Tick normalerweise gar nicht gesetzt ist und also auf Signale von außen gar nicht reagiert wird, wo ich eigentlich keinen wirklichen Sinn drin sehe. Die Frage ist dann, ob tick=1 eventuell beim einem permanentn laufenden PHP-Prozess zu einer zusätzlichen Belastung des Servers führt und ob es eventuell besser wäre, tick=5 oder so zu setzen um PHP da etwas Arbeit zu ersparen...
MfG, Dennis.