在维护/停机期间错过Laravel任务的正确方法是什么?

时间:2017-10-11 03:35:16

标签: php laravel laravel-5 task

当Laravel 5应用程序出现故障(计划维护或其他情况),但几分钟后它恢复正常时,Laravel会自动知道赶上并运行那些错过的任务吗?

如果没有,处理可能错过任务的追赶的首选方法是什么?

1 个答案:

答案 0 :(得分:0)

似乎任务调度系统太简单了,无法确保任务在停机后运行(例如,如果它每天运行或在特定时间运行);正如所宣传的那样,它只是按照给定的时间表运行任务。

从本质上讲,停机/维护可以“错过公共汽车”。

确保关键任务运行:

  • 添加模型/机制,用于存储关于上次运行关键任务的信息
  • 不是直接从计划系统运行关键任务,而是将它们包装在经常运行的任务中,以检查实际任务的上次执行时间,然后在适当时调度它们
    • 这里的基本逻辑是:
      • if (time() > ($task->lastRunTime + $task->intervalTime)) dispatch(...)或;
      • if (time() >= $task->nextRunTime) dispatch(...)

根据您的申请,具体实施方式会有所不同;使用模型的好处是,您可以轻松地使其适应您的应用程序的需求,例如跟踪指标。

相关问题