我有很多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
答案 0 :(得分:0)
正如我从您的问题中看到的那样,如果先前的工作事件被返回或类似的情况,您可能需要照顾好工作。
您将看到,laravel作业在服务器cron作业中的访问时间与* * * * *相同,这意味着每1分钟一整天。
因此,我通过制作自定义命令来解决了这个问题:
php artisan make:command
在我的自定义命令中,我检查是否发生了某些情况,然后我的作业开始运行...
您还可以在另一个作业中执行一个作业,取决于父作业,该作业是否执行。
答案 1 :(得分:0)
我认为最简单的方法是在handle()
方法第一行的Command中使用php函数sleep()
。