平滑重启 源码疑惑

0

源码中 php start.php reload 命令


  case 'reload':
                if($command2 === '-g'){
                    $sig = SIGQUIT;
                }else{
                    $sig = SIGUSR1;
                }
                posix_kill($master_pid, $sig);
                exit;

发起信号后紧跟这exit,这样整个程序不是退出了吗,为什么还能重启

已邀请:

blogdaren - 常年游走于 Linux、PHP、C、VIM 之间【http://www.phpcreeper.com】

赞同来自:

我想你是理解偏了,php start.php reload  有两层含义:
1、当前发出reload指令后,本组进程【假定是A】向当前进程组【假定是B】的主进程发送对应的$sig信号,然后A退出,A的职责完成。【注意:A和B完全是不同的两组进程空间】
2、B的主进程接收到信号以后,再继续逐个的分发$sig信号给B名下的各个子进程,从而完成子进程的平滑 reload,即一个一个的来的,退一个启一个,......,如此反复直到全部重启完为止。

要回复问题请先登录注册