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] <defunct>想问下各位大佬有没有遇到这种情况的?pcntl实现的时候,子进程fatal的时候,父进程是会受到SIGCHLD的。
- 2 回答
- 0 关注
- 1080 浏览
添加回答
举报
0/150
提交
取消