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