3
我有一些用PHP编写的linux守护进程来完成一些后台工作。 有一个“主”过程有时会通过pcntl_fork
产生工作进程并对其进行控制。守护进程PHP:主进程在子进程崩溃时退出
这里是(很简单)的代码:
private function SpawnWorker($realm, $parallelismKey)
{
$pid = pcntl_fork();
if ($pid)
{
$worker = DaemonInstance::Create($pid, $realm, $parallelismKey);
$worker->Store();
$this->workers[$pid] = $worker;
return $worker;
}
else if ($pid == 0) // we're in child process now
return Daemon::REINCARNATE;
else
xechonl("#red#UNABLE TO SPAWN A WORKER ($realm, $parallelismKey)");
return false;
}
与回国后“转生”的价值新的工作进程调用posix_setsid
,它返回一个新的会话ID。但是如果这个过程崩溃了,那个主人也会默默退出。
是否有可能防止这种行为并使整个系统更健壮?