如何在PHP/Laravel中设置随机间隔的重复任务?

How to set repeated task with a random interval in PHP/Laravel?

有没有什么聪明的方法可以让我设置一个随机时间间隔的重复任务。

比如我想在 3 分钟到 5 分钟的范围内每次执行任务 A 示例:

第一个任务 A - 3 分钟
第二个任务 A - 4 分钟
第三个任务 A - 5 分钟
第 4 个任务 A - 4 分钟
...


最后我的解决方案是 laravel 队列作业 https://laravel.com/docs/5.6/queues

有多种方式。

1) 你可以使用crontab。为你的任务创建一个 cron,并以 5 分钟的间隔添加到你的 crontab 中。

2) 如果您只想使用 php 处理,则必须在 loop 中无限添加 sleep,如下所示。 运行 nohup 中的脚本作为进程。所以它会在后台持续运行。

<?php

$i = 0;
while(1){
    //Perform you task A here.


    if($i == 0){ 
        $sleep = 180;   
        $i = 1;
    }else{
        $sleep = 300;   
        $i = 0;
    }   

    sleep($sleep);

}

使用调度器 这是 link:Laravel Doc

调度程序的使用使代码简洁易懂。