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

workerman 配置文件reload的問題

imxuyou

現(xiàn)在想用workerman實(shí)現(xiàn)一個后臺服務(wù),啟動的時候主進(jìn)程會解析一個配置文件,里面有一些upstream配置是所有worker共享的,所以在啟動的時候會放入到共享內(nèi)存中。

現(xiàn)在的問題是,在reload的時候主進(jìn)程沒有相應(yīng)的回調(diào)接口,那worker怎么加載新的配置,如果放到worker的onWorkerReload回調(diào),那upstream會被寫到共享內(nèi)存N次,不知道有沒有其它辦法?

另外有沒有辦法可以處理僅當(dāng)主進(jìn)程退出時做一些清理工作呢?
比如能不能讓register_shutdown_function()不對worker生效

6522 2 0
2個回答

walkor 打賞

建議在onWorkerReload中讀配置,配置沒必要放共享內(nèi)存,放配置文件即可,onWorkerReload時載入。workerman讀取文件后可以常駐內(nèi)存,運(yùn)行過程中沒有任何性能消耗。

如果只讓某一個進(jìn)程做某個事情,可以通過判斷$worker->id,比如只讓0號worker進(jìn)程操作,

$worker->onWorkerReload = function($worker) {
    if ($worker->id === 0) {
       ...
   }
}

目前主進(jìn)程不提供這樣的接口,可以在onWorkerStart時給子進(jìn)程初始化一個全局變量,register_shutdown_function里面判斷下是否有這個變量,如果沒有證明時主進(jìn)程

  • 暫無評論
imxuyou

感謝回復(fù)
配置放共享內(nèi)存是因?yàn)榕渲梦募荒芊澎o態(tài)的配置,比如一個服務(wù)由哪些后端提供,現(xiàn)在有一些配置是需要在運(yùn)行過程中被任意worker修改的,比如某個后端壞掉了,需要動態(tài)的剔除掉。

希望有主進(jìn)程的回調(diào)接口是因?yàn)楫?dāng)我的配置文件更新完手動reload的時候,希望由主進(jìn)程去解析配置文件后放入共享內(nèi)存,這樣worker進(jìn)程重啟之后直接讀共享內(nèi)存就可以了,這里好像并不適合使用判斷$worker->id的方式,我覺得在reload()的時候并不能保證某個id最先被啟動

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