2017-10-11 46 views
0

當Laravel 5應用程序出現故障(計劃維護或其他情況),但幾分鐘後恢復時,Laravel會自動知道是否趕上並運行那些錯過的任務?在維護/停機期間錯過Laravel任務的正確方法是什麼?

如果不是,處理可能錯過任務的追趕的首選方法是什麼?

+0

您只能重新運行失敗的作業。我的意思是你安排的工作。 – C2486

+0

不想重新運行作業 - 只有在本應該運行的作業中,系統在下次環境備份時不會停機。 –

+0

另外它取決於你的查詢條件,如將數據提取到計劃任務是'> today'或'> lastTaskDone',如果它的第二個條件它會工作。 – C2486

回答

0

看起來,任務調度系統有點過於簡單,無法確保任務在停機後運行(比如,如果它每天運行或在特定時間運行);正如所宣稱的,它實際上只是在給定的時間表上運行任務。

從本質上講,停機/維護使「錯過公交車」成爲可能。

確保關鍵任務運行:

  • 添加的模型/機制來存儲信息時,關鍵的任務是最後一次運行
  • ,而不是直接從日程安排系統運行關鍵任務,任務將它們包裝經常運行(S),檢查最後執行的實際任務時,然後分派他們在適當的時候
    • 基本的邏輯在這裏是:
      • if (time() > ($task->lastRunTime + $task->intervalTime)) dispatch(...)或;
      • if (time() >= $task->nextRunTime) dispatch(...)

根據您的應用程序,這樣做的具體實施可能會有所不同;使用模型的好處在於,您可以輕鬆地將其適用於應用程序的需求,例如跟蹤指標。

相關問題