首頁  >  問答  >  主體

thinkphp5如何用redis做一個訂單15分鐘取消?

1.我想用佇列偵測下單的訂單有沒有超過15分鐘,如果超過15分鐘就修改資料庫改為逾時取消,但我不知道怎麼下手

过去多啦不再A梦过去多啦不再A梦2712 天前1664

全部回覆(5)我來回復

  • 漂亮男人

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

    可以將這個功能做成使用者行為觸發,例如使用者查看訂單時才判斷未付款且超過15分鐘就更改訂單狀態為逾時取消。未查看的、狀態未更新的訂單可能寫入計劃任務凌晨更新。在訂單量大的情況下,不建議全部訂單都即時同步狀態,也沒意義。

    回覆
    0
  • 怪我咯

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

    資料庫輪詢:使用定時任務輪詢資料庫,查詢出相關訂單處理,量不大的情況使用,小項目中這個方法簡單實用便於維護

    環形隊列:參考:http://mp.weixin.qq.com/s/mvF...

    隊列服務:使用延時隊列處理 參考:http://tech.youzan.com/queuin...

    回覆
    0
  • 高洛峰

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

    比較好的解決方案是用時間輪,即樓上所說的環形隊列
    用Redis鍵空間通知也可以實現,設置過期時間為15分鐘, 監聽鍵刪除事件, 做相應的操作

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-06-06 09:54:43

    用定時器不好麼

    回覆
    0
  • 滿天的星座

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

    不用redis

    用MySQL即可實現

    方案:
    寫個PHP腳本,守護程序執行,
    while循環,查庫,下單時間超過15分鐘,並且是未支付, 未發貨的訂單,就執行取消操作

    回覆
    0
  • 取消回覆