国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

workerman reload問題的疑惑

void

workerman版本:3.5.18

發(fā)起 reload 指令

前置條件
static::$_gracefulStop = true;
$worker->reloadable = true;
$worker->count = 4;

[attach]1698[/attach]

[attach]1699[/attach]
?
按照這個邏輯一次只能 reload 一個子進程,其他3個子進程根本reload不了
是否需要手動執(zhí)行多次reload 才能reload其余的子進程呢,有點不解, THX

3633 1 0
1個回答

phpcreeper
  1. reload的原理就是一個一個逐步退出然后逐步啟動的,這個啟動的過程是自動的,非手動的。
  2. 其原理的另外部分相關(guān)代碼位于:
    https://github.com/walkor/Workerman/blob/9f36bb4cb718c6fd5b03771bd5f266cd371bb23e/Worker.php#L1592-L1600
  • void 2019-01-31

    parseCommand 方法里面有 reload指令的解析,還有 -g 參數(shù) ,這個是可以手動的,如果是
    手動,按照代碼邏輯一次只能 reload 一個子進程

  • void 2019-01-31

    $one_worker_pid = current(static::$_pidsToRestart);
    // Send reload signal to a worker process.
    posix_kill($one_worker_pid, $sig);

    在主進程 reload 方法里只向一個子進程發(fā)送了 reload 信號,手動操作帶 -g 參數(shù)進行 reload
    這個是不能實現(xiàn)對所有子進程進行 reload吧,不知道理解對不對, THX

  • phpcreeper 2019-01-31
    1. 我說的非手動是指:執(zhí)行php start.php reload [-g] 指令后,逐個reload 子進程的啟動過程是由主進程自動啟動的。
    2. php start.php reload: 代表平滑重啟進程,所謂的一個一個逐步退出然后逐步啟動,換句話就是: 第一個子進程退出,然后主進程立即補上來一個,然后第二個子進程再退出,然后再補上來一個......一次類推,直至新的進程完全替換掉老的進程。
    3. php start.php reload -g: 代表的優(yōu)雅的重啟,唯一的區(qū)別就在于每個子進程會等待連接關(guān)閉以后才會退出,剩余的 和 reload 一模一樣。
  • void 2019-01-31

    謝謝兄臺的細心解答,我再分析一下全局代碼,可能是某個點被我忽略了,造成理解上的疑惑

  • phpcreeper 2019-01-31

    @5401:

    1. -g 參數(shù)和你說的能否reload 所有子進程,根本毫無關(guān)系,我上面已經(jīng)回復(fù)你了。
    2. 你貼的這段代碼就是只向一個子進程發(fā)送reload信號,這正是reload的本意??;主進程會不停的監(jiān)控子進程退出情況,一旦退出然后隨即給補上來,整個過程就是一個個逐步退出并逐步補上來的,重點就是:一個一個一個的來的。
    3. 不客氣,你再琢磨琢磨。
  • void 2019-01-31

    好的,我再折騰一下,把所有不解的梳理出來,讓兄臺指點一下

年代過于久遠,無法發(fā)表回答
??