[請益] Laravel 檢查資料過期的方法

作者: q10242 (黑田祐司)   2018-09-11 12:58:50
我想要用Laravel做一個訂單系統
下單之後五分鐘沒付錢訂單就會失效
下訂單會把貨物數量扣除 讓別人沒辦法下單
但是想不到該怎麼實作這個功能
laravel是用apache在跑
目前想到的方法
1.寫daemon 定期檢查 ->缺點是無論定期間隔多久都有時間差,而且怕會影響系統效能
2.有別人下單的時候或者有人想觀看剩餘貨物數量的時候再來檢查
->感覺比1合理 但是我怕有人一直F5
3.確定付完錢之後再扣物品數量
-> 網站付款方式是先離開網站本身付款完之後再回來
在這期間有可能因為系統顯示有貨,讓兩人同時出去付錢
回來卻只有一個人能有貨的狀況。另外一個人沒貨可以走退款
但是會產生手續費。
我有沒有其他選擇?
作者: knives   2018-09-11 13:27:00
訂單成功之後,產生一個job進Queue,設定五分鐘過後去檢查該筆訂單是否為有效訂單
作者: JustGame (JustGame)   2018-09-11 13:38:00
下單後把訂單內容存在 redis 裡,資料庫物品數量扣掉配合 redis keyspace notification 把過期單加回資料庫
作者: cf1064 (蚵仔)   2018-09-12 14:29:00
下單的時候,加一個過期時間欄位去記錄幾點幾分過期
作者: qw2781728 (captain)   2018-09-21 21:21:00
把訂單分狀態 寫排程去跑那些失效訂單 看要加會庫存還是怎樣 大概就跟一樓說的差不多
作者: knives   2018-09-22 15:07:00
其實還有一招,連job、排程都不用,不過不保證資料一致性
作者: qw2781728 (captain)   2018-09-22 21:21:00
樓上請說
作者: liisi (小心一點)   2018-09-26 23:34:00
應該是先把數量booked住 等到失效在釋放走退款流程 買家會不爽

Links booklink

Contact Us: admin [ a t ] ucptt.com