看workerman的源碼,感覺reload,并不像nginx之類,會(huì)重載配置文件,而是對(duì)設(shè)置為可重載的子進(jìn)程,調(diào)用其工作實(shí)例的重載回調(diào)方法,然后關(guān)閉它,再創(chuàng)建一個(gè)新的同類子進(jìn)程。
感覺reload命令,目的僅僅為了調(diào)用部分工作實(shí)例的onWorkerReload方法?
workerman本身沒有配置文件。所以workerman本身沒有reload重新載入配置文件的說(shuō)法。
workerman reload 默認(rèn)是將子進(jìn)程一個(gè)一個(gè)重啟。
?
當(dāng)然你可以設(shè)置reloadable=false,然后在onWorkerReload里重新載入業(yè)務(wù)配置,實(shí)現(xiàn)不重啟進(jìn)程載入新的業(yè)務(wù)配置。
有個(gè)問(wèn)題想不明白,static::forkWorkers() 之前 static::resetStd() 不好嗎?最先一批子進(jìn)程創(chuàng)建時(shí)還需要 static::resetStd(),后續(xù)重啟的子進(jìn)程也沒有 static::resetStd() 啊。另外,積分負(fù)了,好多操作受限,怎么漲積分呢?
啟動(dòng)的時(shí)候static::resetStd()盡量后面執(zhí)行可以將啟動(dòng)時(shí)的報(bào)錯(cuò)展示在終端,方便看到報(bào)錯(cuò)。
父進(jìn)程static::resetStd()后,子進(jìn)程不需要再static::resetStd()了,會(huì)繼承父進(jìn)程static::resetStd()的結(jié)果。
在社區(qū)只提問(wèn),不回復(fù)會(huì)扣積分。不要只做尋求幫助者,多幫助社區(qū)里其它人回復(fù)問(wèn)題可以增加積分。
在一個(gè)進(jìn)程還在忙的時(shí)候,reload平滑重啟,這個(gè)忙的進(jìn)程為什么不會(huì)被信號(hào)打斷呢,沒看到用pcntl_sigprocmask 把信號(hào)阻塞住的代碼呀