如何在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
调度程序的使用使代码简洁易懂。
有没有什么聪明的方法可以让我设置一个随机时间间隔的重复任务。
比如我想在 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
调度程序的使用使代码简洁易懂。