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