Laravel 8 任務(wù)只運行在一臺服務(wù)器上

2021-07-19 11:07 更新

注意:你的應(yīng)用默認緩存驅(qū)動必須是 databasememcachedredis 才能使用這個特性。除此之外,所有服務(wù)器必須使用同一臺中央緩存服務(wù)器來通信。

若你的應(yīng)用在多臺服務(wù)器中運行,你可能需要限制某個計劃任務(wù)僅在單臺服務(wù)器上運行。假如你有一個計劃任務(wù):在每周五晚生成一份新報告。若此任務(wù)調(diào)度器在三臺服務(wù)器上運行,那么該任務(wù)就會在三臺服務(wù)器上運行并生成三份報告。這樣不好。

當你定義計劃任務(wù)時,可使用 onOneServer 方法表明該任務(wù)僅在單臺服務(wù)器上運行。如此,第一臺獲取到該任務(wù)的服務(wù)器,會給它附加一個原子鎖,這樣便可防止其他服務(wù)器在同一時間內(nèi)執(zhí)行同一個任務(wù):

$schedule->command('report:generate')
                ->fridays()
                ->at('17:00')
                ->onOneServer(); 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號