延迟运行Laravel Schedule

时间:2019-10-10 05:21:54

标签: php laravel cron scheduled-tasks

我有很多Laravel作业每隔一分钟运行一次,

但是我不希望它们全部同时运行,

是否可以让其中的每隔一分钟运行一次但延迟1-2秒?

类似这样的东西:

Job 1 > Every Minute at 00 seconds
Job 2 > Every minute at 05 seconds
Job 3 > Every minute at 10 seconds

对于单独的cron作业,我会这样做:* * * * * ( sleep 30 ; /path/to/executable)

但是我不知道如何使用Laravel Schedules

2 个答案:

答案 0 :(得分:0)

正如我从您的问题中看到的那样,如果先前的工作事件被返回或类似的情况,您可能需要照顾好工作。

您将看到,laravel作业在服务器cron作业中的访问时间与* * * * *相同,这意味着每1分钟一整天。

因此,我通过制作自定义命令来解决了这个问题:

php artisan make:command

在我的自定义命令中,我检查是否发生了某些情况,然后我的作业开始运行...

您还可以在另一个作业中执行一个作业,取决于父作业,该作业是否执行。

答案 1 :(得分:0)

我认为最简单的方法是在handle()方法第一行的Command中使用php函数sleep()