按照文檔說明reloadable設(shè)置為false,那么這個(gè)進(jìn)程是不會(huì)被重啟的,但是源碼中,還是對(duì)這些進(jìn)程進(jìn)行重啟信號(hào),代碼如下:
// 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);
}
}
}
所以對(duì)reloadable設(shè)置為false的進(jìn)程發(fā)送信號(hào)的意義是?
應(yīng)該是關(guān)于master進(jìn)程和child進(jìn)程的設(shè)置吧,是不是只針對(duì)child進(jìn)程?
http://m.wtbis.cn/doc/workerman/worker/on-worker-reload.html
注意:
子進(jìn)程收到reload信號(hào)默認(rèn)的動(dòng)作是退出重啟,以便新進(jìn)程重新加載業(yè)務(wù)代碼完成代碼更新。所以reload后子進(jìn)程在執(zhí)行完onWorkerReload回調(diào)后便立刻退出是正?,F(xiàn)象。
如果在收到reload信號(hào)后只想讓子進(jìn)程執(zhí)行onWorkerReload,不想退出,可以在初始化Worker實(shí)例時(shí)設(shè)置對(duì)應(yīng)的Worker實(shí)例的reloadable屬性為false。