按照文档说明reloadable设置为false,那么这个进程是不会被重启的,但是源码中,还是对这些进程进行重启信号,代码如下:
// Send reload signal to all child processes.
$reloadable_pid_array = array();
foreach (static::$_pidMap as $worker_id => $worker_pid_array) {
$worker = static::$_workers[$worker_id];
if ($worker->reloadable) {
foreach ($worker_pid_array as $pid) {
$reloadable_pid_array[$pid] = $pid;
}
} else {
foreach ($worker_pid_array as $pid) {
// Send reload signal to a worker process which reloadable is false.
\posix_kill($pid, $sig);
}
}
}
所以对reloadable设置为false的进程发送信号的意义是?
应该是关于master进程和child进程的设置吧,是不是只针对child进程?
https://www.workerman.net/doc/workerman/worker/on-worker-reload.html
注意:
子进程收到reload信号默认的动作是退出重启,以便新进程重新加载业务代码完成代码更新。所以reload后子进程在执行完onWorkerReload回调后便立刻退出是正常现象。
如果在收到reload信号后只想让子进程执行onWorkerReload,不想退出,可以在初始化Worker实例时设置对应的Worker实例的reloadable属性为false。
所以这设计是为了让子进程收到重启信号执行事件,但是最后不退出。
对