是否可以确保Laravel作业实际上是连续运行的?

时间:2019-12-04 16:46:15

标签: laravel cron laravel-scheduler laravel-jobs

我想准确地每隔30分钟执行一次特定的工作,例如:

- 00:00
- 00:30
- 01:00
- ...
- 12:00
- 12:30
- 13:00
- ...

Kernel.php中,我有这份工作...

$schedule->command('mycommand:sender')
            ->everyThirtyMinutes();

...,在crontab中,我有此命令...

* * * * * cd /www/webapp && php artisan schedule:run >> /dev/null 2>&1

显然一切正常,但是如果我停止服务或重新启动服务器,则Kernel或什至Crontab中的此指令对于例如服务器或服务已变为正确在“ 12:29”可用时,我知道命令将在“分钟到分钟”内执行,但是这些指令中的“内容”将知道下一次执行“应该”在12:30或它的执行方式在12:29之后运行“ 30分钟”,因此是12:59?

尽管看似无关紧要,但是我的系统中有任务,需要在这些“轮次”执行,因为任务“执行时间”决定了要执行的操作。

2 个答案:

答案 0 :(得分:0)

添加此内容-> everyThirtyMinutes();

cron("*/30 * * * *")

这将从现在开始执行:

  

于2019-12-04 18:00:00
  然后在2019-12-04 18:30:00
  然后在2019-12-04 19:00:00
  然后在2019-12-04 19:30:00
  然后在2019-12-04 20:00:00

答案 1 :(得分:-1)

不是每分钟在cron中运行并检查php中的逻辑,为什么不让cron每30分钟运行一次?

0,30 * * * * cd /www/webapp && php artisan schedule:run >> /dev/null 2>&1