0
當Laravel 5應用程序出現故障(計劃維護或其他情況),但幾分鐘後恢復時,Laravel會自動知道是否趕上並運行那些錯過的任務?在維護/停機期間錯過Laravel任務的正確方法是什麼?
如果不是,處理可能錯過任務的追趕的首選方法是什麼?
當Laravel 5應用程序出現故障(計劃維護或其他情況),但幾分鐘後恢復時,Laravel會自動知道是否趕上並運行那些錯過的任務?在維護/停機期間錯過Laravel任務的正確方法是什麼?
如果不是,處理可能錯過任務的追趕的首選方法是什麼?
看起來,任務調度系統有點過於簡單,無法確保任務在停機後運行(比如,如果它每天運行或在特定時間運行);正如所宣稱的,它實際上只是在給定的時間表上運行任務。
從本質上講,停機/維護使「錯過公交車」成爲可能。
確保關鍵任務運行:
if (time() > ($task->lastRunTime + $task->intervalTime)) dispatch(...)
或;if (time() >= $task->nextRunTime) dispatch(...)
根據您的應用程序,這樣做的具體實施可能會有所不同;使用模型的好處在於,您可以輕鬆地將其適用於應用程序的需求,例如跟蹤指標。
您只能重新運行失敗的作業。我的意思是你安排的工作。 – C2486
不想重新運行作業 - 只有在本應該運行的作業中,系統在下次環境備份時不會停機。 –
另外它取決於你的查詢條件,如將數據提取到計劃任務是'> today'或'> lastTaskDone',如果它的第二個條件它會工作。 – C2486