0

我想准确地在轮次执行某些工作,每 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

显然一切都很好,但是如果我停止服务或重新启动服务器,那么这个指令,无论是 inKernel还是 in Crontab,都是正确的,例如,服务器或服务在“12:29”变得可用,我知道命令会从“分钟到分钟”执行,但是这些指令中的“某些东西”会知道下一次执行“应该”在 12:30 或现在的方式,将在 12:29 之后运行“30 分钟”,因此,12 :59?

虽然看起来无关紧要,但我的系统中有任务,需要在这些“回合时间”执行,因为任务“执行时间”决定了将执行什么。

4

2 回答 2

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

于 2019-12-04T17:00:08.673 回答
-1

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

0,30 * * * * cd /www/webapp && php artisan schedule:run >> /dev/null 2>&1
于 2019-12-04T17:19:39.013 回答