临时机票预订

时间:2011-12-24 11:52:29

标签: php session

我正在为公共汽车建立一个电子票务网站。我在这里面临一个问题:当用户使用座位号预订门票时,我已使用座位号更新了数据库。现在我想知道如果他关闭窗口并选择不预订会怎么样。我应该在一段时间后让他的会话到期

3 个答案:

答案 0 :(得分:4)

我会在会话中保留他的选择,并在确认预订后才提交数据库。

答案 1 :(得分:1)

这是一个经常出现在票务和零售网站上的问题。用户经常遇到的困境是他们购买物品(低库存)或预订特定座位只是为了发现资源不再可用,因为另一个用户在他们做之前点击了'确认'......

着眼于跟踪正在购买的资源,最好实施一个临时的'temp_transaction'数据库表,您的代码可以参考该表来确定用户是否在预订过程中,比如说,一个特定的座位。

一旦对临时数据进行了付款,审核和验证,就可以对主“交易”表进行提交,并使用确定数据更新“资源”(席位)表。

这种方法可以更好地计算并发事务以及用户活动和/或资源状态的时间点审计。

答案 2 :(得分:0)

虽然@Gigi的解决方案是合理的,但它并不完整。

你应该以某种方式保留游客选择的座位,否则同时访问的另一位访客可能保留相同的座位。

您可以设置一个时间,例如十分钟,座位保留给首先保留座位的访客。在此期间,该访问者可以完成预订(即输入付款和交付数据),此时您更新相应的字段以指示他们所代表的席位不应再次释放,因为他们现在“属于”该客户。

您可以运行然后不时地运行删除作业(例如,在每个页面视图上,或者在每次检查可用座位之前,或者可能通过cron作业)释放已预留超过十分钟的座位之前,但其保留尚未完成。