php - Laravel 队列 - 作业之间暂停
问题描述
我想创建一个仅每 X 秒运行一次作业的队列(AMAZON SQS)。因此,如果突然提交了 50 个作业,则最终排在队列中。队列监听器然后拉一个作业,做一些事情并等待 X 秒。之后,下一个作业被拉出。另一个 X 秒暂停。等等等等
对于队列侦听器,sleep option 选项仅确定如果没有可用的新作业,worker 将“睡眠”多长时间。因此,只有在队列中没有任何内容时它才会休眠。
或者我应该在我的 PHP 代码中添加一个 pause(x) 吗?
[编辑] 我刚刚使用 FIFO 和标准 AWS SQS 队列测试了 sleep 方法,这弄乱了整个队列。突然工作(成功)重新提交了 3 次,之后进入失败状态。此外,我的代码中给出的延迟(3-4 分钟)被忽略了,取而代之的是一分钟
<?php
namespace App\Jobs;
use App\City;
class RetrieveStations extends Job
{
protected $cities;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct ($cities)
{
$this->cities = $cities;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
// code here
doSomething()
sleep(X);
}
}
解决方案
没错,你需要让你的 php 代码休眠,没有别的办法。
推荐阅读
- android - AlarmManager 没有在正确的时间发送通知
- python - matlab转python编码
- c# - MonoGame - 获取光标在相对于矩阵的世界中的网格单元位置
- powershell - Powershell脚本对文件进行排序并将它们放入不同名称的各个文件夹中
- azure-devops - 如何在 Azure DevOps Server 2020 中包含带有共享 YAML 模板的 PS 代码?
- adobe-illustrator - 使用 Python 编写 Adobe Illustrator 脚本
- c# - Mutltitarget 无需修改 csproj 格式
- httpclient - 用于 HttpClient 模拟的 SPN
- postgresql - Postgresql - 树状/树状基于计数的查询
- html - 与声明元素时将元素放在 id 或 class 前面有什么区别?