/** * Signals handler function * * @param integer $signal * @final */ public final function HandleSignals($signal) { $this->Logger->debug("HandleSignals received signal {$signal}"); if ($signal == SIGUSR2) { $this->Logger->debug("Recived SIGUSR2 from one of childs"); $this->ProcessManager->PIDs = array(); $this->ProcessManager->ForkThreads(); return; } $pid = @pcntl_wait($status, WNOHANG | WUNTRACED); if ($pid > 0) { $this->Logger->debug("Application received signal {$signal} from child with PID# {$pid} (Exit code: {$status})"); foreach ((array) $this->ProcessManager->PIDs as $ipid => $ipid_info) { if ($ipid == $pid) { unset($this->ProcessManager->PIDs[$ipid]); if ($this->ProcessManager->PIDDir) { $this->Logger->debug("Delete thread PID file {$ipid}"); @unlink($this->ProcessManager->PIDDir . "/" . $ipid); } $known_child = true; break; } } if ($known_child) { $this->ProcessManager->ForkThreads(); } else { $this->Logger->debug("Signal received from unknown child."); } } }
/** * Signals handler function * * @param integer $signal * @final */ final public function HandleSignals($signal) { //Log::Log("HandleSignals received signal {$signal}", E_NOTICE); $pid = @pcntl_wait($status, WNOHANG | WUNTRACED); if ($pid > 0) { //Log::Log("Application received signal {$signal} from child with PID# {$pid} (Exit code: {$status})", E_NOTICE); foreach((array)$this->ProcessManager->PIDs as $kk=>$vv) { if ($vv == $pid) { unset($this->ProcessManager->PIDs[$kk]); $known_child = true; break; } } if ($known_child) $this->ProcessManager->ForkThreads(); else { //Log::Log("Signal received from unknown child.", E_NOTICE); } } }