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

使用分布式部署GatewayWorker,定時器在每臺服務(wù)器上都在運(yùn)行

cbcbcb

請問如何控制只在主機(jī)上運(yùn)行定時任務(wù)
或者有沒有可能生成一個獨立的業(yè)務(wù)進(jìn)程,專供定時器運(yùn)行

2263 1 0
1個回答

phpcreeper

比如設(shè)定: $worker->count = 5
我只想在1、2號進(jìn)程上運(yùn)行定時器:

$worker->onWorkerStart = function($worker){
    if(in_array($worker->id, [1,2])){
        Timer::add(...);
    }
};
  • phpcreeper 2020-02-20

    另外分布式的話,可以將定時器存儲到mysql或redis組件以便共享。

  • cbcbcb 2020-02-20

    @614:可能我沒描述清楚,現(xiàn)在的問題是部署在了ABC3臺機(jī)器,運(yùn)行起來后ABC3臺上都有定時任務(wù),但是只想在A的0號worker上運(yùn)行定時任務(wù),請問這樣應(yīng)該如何處理?

  • phpcreeper 2020-02-20

    這個看你具體怎么實施系統(tǒng)管理了,方法很多,比如:
    可以將所有參與分布式部署的機(jī)器以及對應(yīng)的worker服務(wù)以及定時器等等信息匯總起來進(jìn)行集中性的系統(tǒng)(共享)存儲管理,然后在某臺特定的機(jī)器上運(yùn)行一個監(jiān)控腳本,通過分析前面的匯總數(shù)據(jù)定制啟動目標(biāo)服務(wù)。

  • cbcbcb 2020-02-20

    @614:如果我想簡單點處理的話,可不可以A上開5個gateway進(jìn)程,B和C還是4個,然后定時器只在$worker->id === 5的時候運(yùn)行;這樣能否確保整個負(fù)載均衡只運(yùn)行一次定時器?

  • phpcreeper 2020-02-20

    按照你設(shè)定的這個簡單處理邏輯,希望不同機(jī)器上同一份代碼能夠預(yù)期工作,如果非要這么做(若更改進(jìn)程數(shù)代碼判定邏輯就會受影響),我認(rèn)為也是可以的,不過代碼邏輯要注意需要判定的是 $worker->id == 4 而不是5,因為進(jìn)程編號索引是從0開始計數(shù)的。

  • cbcbcb 2020-02-20

    @614:確實是有點簡單粗暴了,想請教一下“將定時器存儲到mysql或redis組件以便共享”,可以說的再具體一點怎么解決我現(xiàn)在這個問題嘛?

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