作者CheLiu (刘彻)
看板PHP
标题[请益] 订票系统的逻辑请教
时间Fri Nov 28 17:21:05 2014
想请教一下
像订位系统的那种
如何防止同时订位的问题
ex:票只剩下5张,却有两组人马同时进系统点选购票
加起来 总共要4+2张
我的想法是
让先进去的先hold住4张
然後对第二组显示只剩一张
等到第一组断线或是取消後再把位子放出来
不过问题在於如果是这样做法
那不就要随时侦测是否还在系统之中?
有更好的做法吗? 请多指教 感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.147.100.151
※ 文章网址: http://webptt.com/cn.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