cli模式下用process多进程。
master进程通过SIGCHLD监听子进程退出并重启子进程。swoole_process::signal(SIGCHLD, function(){ // 子进程退出
while ($ret = swoole_process::wait(false)) { unset(self::$wokers[$ret['pid']]); self::logError('SIGNAL-WORKER_EXIT-%s', $ret['pid']); //重新创建
self::initProcess();
}
});
直接kill掉子进程,父进程能够接受到信号并重新拉起子进程。
但子进程发生fatal的情况下,父进程接收不到子进程退出的信号,同时子进程会成为僵尸进程。[php]
想问下各位大佬有没有遇到这种情况的?pcntl实现的时候,子进程fatal的时候,父进程是会受到SIGCHLD的。