thinkphp5中如何用redis做一个订单15分钟取消?

1.我想用队列检测下单的订单有没有超过15分钟,如果超过15分钟就修改数据库改为超时取消,但是不知道怎么下手

阅读 12.3k
6 个回答

可以将这个功能做成用户行为触发,比如用户查看订单时才判断未支付且超过15分钟就更改订单状态为超时取消。未查看的、状态未更新的订单可能写计划任务凌晨更新。在订单量大的情况下,不推荐全部订单都实时同步状态,也没意义。

比较好的解决方案是用时间轮,即楼上所说的环形队列
用Redis键空间通知也可以实现,设置过期时间为15分钟, 监听键删除事件, 做相应的操作

尝试下swoole 或者 workerman 吧 ·

用定时器不好么

不用redis

用MySQL即可实现

方案:
写个PHP脚本,守护进程执行,
while循环,查库,下单时间超过15分钟,并且是未支付, 未发货的订单,就执行取消操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题