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

平滑重啟 源碼疑惑

wuxian

源碼中?php start.php reload 命令

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

發(fā)起信號后緊跟這exit,這樣整個程序不是退出了嗎,為什么還能重啟

3405 1 0
1個回答

phpcreeper

我想你是理解偏了,php start.php reload? 有兩層含義:
1、當(dāng)前發(fā)出reload指令后,本組進(jìn)程【假定是A】向當(dāng)前進(jìn)程組【假定是B】的主進(jìn)程發(fā)送對應(yīng)的$sig信號,然后A退出,A的職責(zé)完成。【注意:A和B完全是不同的兩組進(jìn)程空間】
2、B的主進(jìn)程接收到信號以后,再繼續(xù)逐個的分發(fā)$sig信號給B名下的各個子進(jìn)程,從而完成子進(jìn)程的平滑 reload,即一個一個的來的,退一個啟一個,......,如此反復(fù)直到全部重啟完為止。

  • hk2018 2020-03-06

    blogdaren 大哥,我把KILL_WORKER_TIMER_TIME修改成10s,然后onmessage里sleep 10s ,發(fā)送個請求,然后立刻執(zhí)行reload,master收到10后向其子進(jìn)程發(fā)10 信號,子進(jìn)程為什么沒被打斷呢,在代碼里沒看到用pcntl_sigprocmask 阻塞信號啊,怎么做到的呢?

  • phpcreeper 2020-03-06

    1、假如 KILL_WORKER_TIMER_TIME = 10: 指的是子進(jìn)程在沒有正常退出的情況下,10秒之后會被主進(jìn)程強(qiáng)制干掉,即發(fā)送的是 kill -9 信號給子進(jìn)程(這個設(shè)置和你后面的描述也沒啥邏輯關(guān)系);
    2、(子進(jìn)程沒有被打斷?不知道你理解的啥意思)這么說吧:主進(jìn)程發(fā)送reload給子進(jìn)程以后,子進(jìn)程的sleep系統(tǒng)調(diào)用會立即被中斷,然后子進(jìn)程退出,然后主進(jìn)程立即會補(bǔ)充一個新的子進(jìn)程進(jìn)來。(根據(jù)你的測試思路我也論證了下,沒沒問題的)

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