wordpress 宽版88个seo网站优化基础知识点
需求是这样:
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');}