• 0
  • 0

延迟消息推送思路

2019-05-15 57 0 admin 所属分类:PHP 记录

客户有这样的一个需求:平台有各种会员,按照会员的级别获取最新订单内容。订单内容都可以获取,只是普通会员是晚一点获取,而高级会员可以在订单入库的时候就立马获取。

一开始我的思路错了。数据库查询条件如下

//设置当前请求时间往后的某个时间 $setting['outdelay']是时间间隔 如30秒
$time = intval($_GET['published_at']) + $setting['outdelay'];
$sql .= " and o.published_at >= "+$time;

这样会导致在当前时间和延后时间的间隔内如果有新的订单入库,将无法获取。

将查询条件改为如下即可

$cur_time = time();
$sql .= " and o.published_at >= " . intval($_GET['published_at']) ." and {$cur_time}-o.published_at >= " . intval($setting['outdelay']);

解释起来就是 订单入库的时间要大于请求的发布时间,且与当前时间的差大于等于预定的时间间隔。

返回顶部