suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie storniere ich mit Redis eine Bestellung in thinkphp5 innerhalb von 15 Minuten?

1. Ich möchte die Warteschlange verwenden, um zu überprüfen, ob die Bestellung länger als 15 Minuten aufgegeben wurde. Wenn sie 15 Minuten überschreitet, ändere ich die Datenbank auf Timeout-Stornierung, weiß aber nicht, wie ich anfangen soll

过去多啦不再A梦过去多啦不再A梦2783 Tage vor1722

Antworte allen(5)Ich werde antworten

  • 漂亮男人

    漂亮男人2017-06-06 09:54:43

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

    Antwort
    0
  • 怪我咯

    怪我咯2017-06-06 09:54:43

    数据库轮询:使用定时任务轮询数据库,查询出相关订单处理,量不大的情况使用,小项目中这个方法简单实用便于维护

    环形队列:参考:http://mp.weixin.qq.com/s/mvF...

    队列服务:使用延时队列处理 参考:http://tech.youzan.com/queuin...

    Antwort
    0
  • 高洛峰

    高洛峰2017-06-06 09:54:43

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

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-06-06 09:54:43

    用定时器不好么

    Antwort
    0
  • 滿天的星座

    滿天的星座2017-06-06 09:54:43

    不用redis

    用MySQL即可实现

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

    Antwort
    0
  • StornierenAntwort