[請益] 訂票系統的邏輯請教

看板PHP作者 (劉徹)時間9年前 (2014/11/28 17:21), 編輯推噓3(3018)
留言21則, 2人參與, 最新討論串1/1
想請教一下 像訂位系統的那種 如何防止同時訂位的問題 ex:票只剩下5張,卻有兩組人馬同時進系統點選購票 加起來 總共要4+2張 我的想法是 讓先進去的先hold住4張 然後對第二組顯示只剩一張 等到第一組斷線或是取消後再把位子放出來 不過問題在於如果是這樣做法 那不就要隨時偵測是否還在系統之中? 有更好的做法嗎? 請多指教 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.147.100.151 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1417166468.A.CBC.html

11/28 17:34, , 1F
保留個三到五分鐘沒有下訂就取消作業如何?
11/28 17:34, 1F

11/28 17:34, , 2F
威秀的電影票線上劃位訂購就限制操作時間3分鐘
11/28 17:34, 2F

11/28 17:35, , 3F
逾時就重來,然後就看下一次這些位置誰搶到
11/28 17:35, 3F

11/28 17:40, , 4F
這樣子你只要檢查該位子尚未下訂,而保留時間已逾時
11/28 17:40, 4F

11/28 17:40, , 5F
就可以直接當成可用的位置顯示給下一組人看
11/28 17:40, 5F

11/28 17:40, , 6F
完全不用管前端在做啥
11/28 17:40, 6F

11/28 17:41, , 7F
前端則可以用js等到五分鐘就跳回主畫面顯示操作逾時
11/28 17:41, 7F

11/28 17:43, , 8F
除非是已經付錢才慢慢劃位,不然沒必要保留太久
11/28 17:43, 8F

11/28 17:50, , 9F
那這樣後端的部分 要怎麼寫自動取消的作業PHP 做得到
11/28 17:50, 9F

11/28 17:50, , 10F
自動嗎? 多謝指教><
11/28 17:50, 10F

11/28 17:51, , 11F
不用取消阿,檢查逾時的欄位就當成已取消就好
11/28 17:51, 11F

11/28 17:51, , 12F
保留時對該位置紀錄時間,之後就檢查這個時間就知道了
11/28 17:51, 12F

11/28 17:52, , 13F
下一個人進入訂票系統後,你sql去檢查那個欄位,跟現在
11/28 17:52, 13F

11/28 17:52, , 14F
時間差超過逾時時間,就當成這位置已釋放
11/28 17:52, 14F

11/28 17:53, , 15F
當然還要檢查有沒有被下訂啦
11/28 17:53, 15F

11/28 17:55, , 16F
在還沒逾時前,別人進系統搜尋就自動過濾未逾時的座位
11/28 17:55, 16F

11/28 17:57, , 17F
where 位置.時間 - 現在 > 3分鐘 && 位置.被預訂 = 0
11/28 17:57, 17F

11/28 17:57, , 18F
這樣的條件就可以查出所以目前可顯示的空位
11/28 17:57, 18F

11/28 17:58, , 19F
把 = 0 改成 = 否 整句比較通順
11/28 17:58, 19F

11/28 17:58, , 20F
&& 應該是 and XD
11/28 17:58, 20F

11/28 18:00, , 21F
太感謝了 馬上試看看
11/28 18:00, 21F
文章代碼(AID): #1KU3w4oy (PHP)