看板 PHP 關於我們 聯絡資訊
想請教一下 像訂位系統的那種 如何防止同時訂位的問題 ex:票只剩下5張,卻有兩組人馬同時進系統點選購票 加起來 總共要4+2張 我的想法是 讓先進去的先hold住4張 然後對第二組顯示只剩一張 等到第一組斷線或是取消後再把位子放出來 不過問題在於如果是這樣做法 那不就要隨時偵測是否還在系統之中? 有更好的做法嗎? 請多指教 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.147.100.151 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1417166468.A.CBC.html
Peruheru: 保留個三到五分鐘沒有下訂就取消作業如何? 11/28 17:34
Peruheru: 威秀的電影票線上劃位訂購就限制操作時間3分鐘 11/28 17:34
Peruheru: 逾時就重來,然後就看下一次這些位置誰搶到 11/28 17:35
Peruheru: 這樣子你只要檢查該位子尚未下訂,而保留時間已逾時 11/28 17:40
Peruheru: 就可以直接當成可用的位置顯示給下一組人看 11/28 17:40
Peruheru: 完全不用管前端在做啥 11/28 17:40
Peruheru: 前端則可以用js等到五分鐘就跳回主畫面顯示操作逾時 11/28 17:41
Peruheru: 除非是已經付錢才慢慢劃位,不然沒必要保留太久 11/28 17:43
CheLiu: 那這樣後端的部分 要怎麼寫自動取消的作業PHP 做得到 11/28 17:50
CheLiu: 自動嗎? 多謝指教>< 11/28 17:50
Peruheru: 不用取消阿,檢查逾時的欄位就當成已取消就好 11/28 17:51
Peruheru: 保留時對該位置紀錄時間,之後就檢查這個時間就知道了 11/28 17:51
Peruheru: 下一個人進入訂票系統後,你sql去檢查那個欄位,跟現在 11/28 17:52
Peruheru: 時間差超過逾時時間,就當成這位置已釋放 11/28 17:52
Peruheru: 當然還要檢查有沒有被下訂啦 11/28 17:53
Peruheru: 在還沒逾時前,別人進系統搜尋就自動過濾未逾時的座位 11/28 17:55
Peruheru: where 位置.時間 - 現在 > 3分鐘 && 位置.被預訂 = 0 11/28 17:57
Peruheru: 這樣的條件就可以查出所以目前可顯示的空位 11/28 17:57
Peruheru: 把 = 0 改成 = 否 整句比較通順 11/28 17:58
Peruheru: && 應該是 and XD 11/28 17:58
CheLiu: 太感謝了 馬上試看看 11/28 18:00