看板 PHP 關於我們 聯絡資訊
假設像博客萊購書,某本書只剩下一本 A使用者加入訂購,session存在此筆資料 但前台在還沒結帳之前,還是呈現還剩一本 B使用者也於是去訂購,那麼假設B提前結帳 A使用者結帳時後不就還要再做一層判斷,看是否還有庫存 只是會導致A覺得剛剛有庫存,已經訂購了,但結帳卻沒有此筆資料 因此想問看看有沒有方式可以避免呢? 另外一個問題雖然發生機率少,但還是會發生 也就是假設多個使用者"同時"按下結帳,那麼是會產生重複的訂單嗎? 這樣不就會導致販賣的商品不夠了 這樣問題該如何預防呢? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.39.126
terrybob:要有顯示最新庫存量的功能、並且提醒預訂的書本已經沒有 03/11 15:06
MOONRAKER:有人訂購時就先把庫存減一?他如果沒結帳再加回去? 03/11 16:13
MOONRAKER:(我亂想的) 03/11 16:14
appleboy46:樓上,假設那個人訂購,然後過一陣子再去結帳或者取消 03/11 17:08
appleboy46:這樣會造成一些問題吧? 03/11 17:08
Sforever:2f的方法+timeout 03/11 17:19
MOONRAKER:所以這真的是亂想的。要看人家真正的商務運作怎麼處理。 03/11 18:53
liuyyss:完成結帳前後台再去比對庫存量夠不夠,夠的才真正下單,最 03/11 19:44
liuyyss:後再列出下單結果讓使用者確認,這樣應該可以吧 03/11 19:45
liuyyss:即使2f的方法+timeout,如果使用都直接離開或關閉網頁的話 03/11 19:47
liuyyss:可能還是會有問題吧? 03/11 19:48
liuyyss:               ^^者 03/11 19:48
MOONRAKER:user要結帳以前先檢查所有已訂購但未結帳的訂單… 03/11 20:51
MOONRAKER:其實只要「剩下件數」不公布給user知道就行了 :-# 03/11 20:51
Sforever:timeout的問題丟給另一個背景程式去檢查, 只要使用者下 03/12 14:13
Sforever:訂單就塞一個紀錄在DB裡面, 完成訂購在清除 然後程式去 03/12 14:13
Sforever:check那個紀錄超過時間就刪除 03/12 14:14
jimpop:我也覺得2F+timout~ 03/15 03:43
jimpop:這樣等於下單時先鎖住這"1"筆資料~避免被其他使用者使用 03/15 03:44
jimpop:如果使用者超過付帳的期限~則再將這"1"筆資料加回來 03/15 03:45
jimpop:如此不會發生幽靈訂單 03/15 03:46
guancheng:2F+timout~這樣會不會發生購物版的DoS @@a 03/18 10:36
guancheng:就來個程式~等timeout就馬上再下訂庫存量,然後都不結帳 03/18 10:37
guancheng:"大部份"的清況貨沒了,只要落差不大還可以調 03/18 10:43
guancheng:系統都是下訂檢查一次,結帳前檢查一次 03/18 10:43
guancheng:如果訂單一定不能超過庫存,可以試試下面這個方法 03/18 10:47
guancheng:下訂(檢查)=>結帳前(檢查)=>扣庫存=>再檢查一次 03/18 10:48
guancheng:扣完庫存再檢查時,如果庫存變負的,訂單自動失效 03/18 10:50
guancheng:即使是同時下訂,也會有前後,看誰先結帳囉! 03/18 10:52