1.我想用佇列偵測下單的訂單有沒有超過15分鐘,如果超過15分鐘就修改資料庫改為逾時取消,但我不知道怎麼下手
可以將這個功能做成使用者行為觸發,例如使用者查看訂單時才判斷未付款且超過15分鐘就更改訂單狀態為逾時取消。未查看的、狀態未更新的訂單可能寫入計劃任務凌晨更新。在訂單量大的情況下,不建議全部訂單都即時同步狀態,也沒意義。
資料庫輪詢:使用定時任務輪詢資料庫,查詢出相關訂單處理,量不大的情況使用,小項目中這個方法簡單實用便於維護
環形隊列:參考:http://mp.weixin.qq.com/s/mvF...
隊列服務:使用延時隊列處理 參考:http://tech.youzan.com/queuin...
比較好的解決方案是用時間輪,即樓上所說的環形隊列 用Redis鍵空間通知也可以實現,設置過期時間為15分鐘, 監聽鍵刪除事件, 做相應的操作
用定時器不好麼
不用redis
用MySQL即可實現
方案:寫個PHP腳本,守護程序執行,while循環,查庫,下單時間超過15分鐘,並且是未支付, 未發貨的訂單,就執行取消操作
可以將這個功能做成使用者行為觸發,例如使用者查看訂單時才判斷未付款且超過15分鐘就更改訂單狀態為逾時取消。未查看的、狀態未更新的訂單可能寫入計劃任務凌晨更新。在訂單量大的情況下,不建議全部訂單都即時同步狀態,也沒意義。
資料庫輪詢:使用定時任務輪詢資料庫,查詢出相關訂單處理,量不大的情況使用,小項目中這個方法簡單實用便於維護
環形隊列:參考:http://mp.weixin.qq.com/s/mvF...
隊列服務:使用延時隊列處理 參考:http://tech.youzan.com/queuin...
比較好的解決方案是用時間輪,即樓上所說的環形隊列
用Redis鍵空間通知也可以實現,設置過期時間為15分鐘, 監聽鍵刪除事件, 做相應的操作
用定時器不好麼
不用redis
用MySQL即可實現
方案:
寫個PHP腳本,守護程序執行,
while循環,查庫,下單時間超過15分鐘,並且是未支付, 未發貨的訂單,就執行取消操作