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

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

Links booklink

Contact Us: admin [ a t ] ucptt.com