作者q10242 (黑田祐司)
看板PHP
標題[請益] Laravel 檢查資料過期的方法
時間Tue Sep 11 12:58:50 2018
我想要用Laravel做一個訂單系統
下單之後五分鐘沒付錢訂單就會失效
下訂單會把貨物數量扣除 讓別人沒辦法下單
但是想不到該怎麼實作這個功能
laravel是用apache在跑
目前想到的方法
1.寫daemon 定期檢查 ->缺點是無論定期間隔多久都有時間差,而且怕會影響系統效能
2.有別人下單的時候或者有人想觀看剩餘貨物數量的時候再來檢查
->感覺比1合理 但是我怕有人一直F5
3.確定付完錢之後再扣物品數量
-> 網站付款方式是先離開網站本身付款完之後再回來
在這期間有可能因為系統顯示有貨,讓兩人同時出去付錢
回來卻只有一個人能有貨的狀況。另外一個人沒貨可以走退款
但是會產生手續費。
我有沒有其他選擇?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.128.70
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1536641933.A.274.html
1F:→ knives: 訂單成功之後,產生一個job進Queue,設定五分鐘過後去檢查 09/11 13:27
2F:→ knives: 該筆訂單是否為有效訂單 09/11 13:28
3F:→ JustGame: 下單後把訂單內容存在 redis 裡,資料庫物品數量扣掉 09/11 13:38
4F:→ JustGame: 配合 redis keyspace notification 把過期單加回資料庫 09/11 13:39
謝謝大家
我再試試看
※ 編輯: q10242 (180.176.128.70), 09/11/2018 18:07:47
5F:→ cf1064: 下單的時候,加一個過期時間欄位去記錄幾點幾分過期 09/12 14:29
6F:推 qw2781728: 把訂單分狀態 寫排程去跑那些失效訂單 看要加會庫存還 09/21 21:21
7F:→ qw2781728: 是怎樣 大概就跟一樓說的差不多 09/21 21:21
8F:→ knives: 其實還有一招,連job、排程都不用,不過不保證資料一致性 09/22 15:07
9F:推 qw2781728: 樓上請說 09/22 21:21
+1我也想知道
10F:推 liisi: 應該是先把數量booked住 等到失效在釋放 09/26 23:34
11F:推 liisi: 走退款流程 買家會不爽 09/26 23:36
※ 編輯: q10242 (180.176.128.70), 10/01/2018 14:49:30