当前位置: 首页 > news >正文

PHP判处重复延长队列执行时间

需求是这样:

14:00的时候,需要给1000个门店执行发券操作,有的门店需要发3个场景,开放平台的接口有请求频次限制,他是按照门店的场景发券需要间隔10秒。比如说,AB两个门店同时发a券,但不能 A门店同时发a、b券。

$delay = 10; // 设置固定的间隔时间为10秒$previousExecutionTimes = []; // 用于记录每个s_id的上一个任务执行时间foreach ($data as $v) {$jobData = ['s_id'    => $v['s_id'],'labelId' => $v['labelId']];$s_id = $v['s_id'];// 检查之前是否有相同s_id的任务,如果有,就取其上一个执行时间,否则默认为当前时间$previousExecutionTime = isset($previousExecutionTimes[$s_id]) ? $previousExecutionTimes[$s_id] : time();$currentExecutionTime = time();$currentDelay = max($delay, $previousExecutionTime + $delay - $currentExecutionTime); // 计算当前任务的延迟时间,保证相同s_id的任务间隔为10秒$previousExecutionTimes[$s_id] = $currentExecutionTime + $currentDelay; // 更新当前s_id的上一个任务执行时间dump("time:{$currentDelay},s_id:{$s_id}");Queue::later($currentDelay, 'QueryValueadded@taskSubmit', $jobData, 'test');}

http://www.lryc.cn/news/113563.html

相关文章:

  • flask中的应用上下文
  • cocos creator 的input.on 不生效
  • WFPlayer
  • Netty面试题
  • 基于Home Assistant远程开门
  • Docker相关的参数配置
  • 【CSS3】CSS3 2D 转换 - scale 缩放 ③ ( 使用 scale 设置制作可缩放的按钮案例 )
  • Stable Diffusion教程(6) - 图片高清放大
  • freeswitch 1.10.10-dev录音早期媒体卡通道的bug分析
  • Zebec Protocol ,不止于 Web3 世界的 “Paypal”
  • Gcd 2023牛客暑期多校训练营6 G
  • 常用C++编译器推荐
  • C++QT教程1——QT概述(下载与安装)
  • 在oracle SQL中创建返回表的函数
  • Kubernetes API Aggregation API聚合
  • 【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台
  • 重生学c++系列第三课类和对象(上)
  • 驱动开发-按键中断
  • 数据结构 | 二叉树的应用
  • python:卡尔曼和贝叶斯滤波器
  • 走进 Go 语言基础语法 | 青训营 (1)
  • 基于边缘无线协同感知的低功耗物联网LPIOT技术:赋能智慧园区方案以及数字工厂领域
  • 【《快速构建AI应用——AWS无服务器AI应用实战》——基于云的解决方案快速完成人工智能项目的指南】
  • vue运行在IE浏览器空白报错SCRIPT1006: 缺少‘)‘ -【vue兼容IE篇】
  • 接口自动化测试Mock Get和Post请求
  • WPF上位机8——C#与MySQL
  • [JAVAee]网络编程-套接字Socket
  • 批量导出pdf为zip文件(可以修改zip中pdf名称)
  • [国家集训队] Tree II 题解报告
  • 【redis】docker搭建redis集群