2011-12-24 59 views
0

我正在为巴士建设一个电子票务网站。我在这里面临一个问题:当用户用座位号预订门票时,我已经用他们的座位号更新了数据库。现在我想知道如果他关闭了窗口并选择不预订,我应该在一段时间后过期吗?临时机票预订

回答

4

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

+0

是的...好主意。感谢Gigi – AssamGuy 2011-12-24 12:01:44

0

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

您应该以某种方式预订访客选择的座位,否则另一位同时访问的访客可能会预订相同的座位。

您可以设置一个时间,例如10分钟,其中座位保留给第一位预约的访客。在此期间,该访客可以完成预订(即输入付款和交付数据),此时您更新适当的字段以表明他们所代表的座位不应再次被释放,因为他们现在“属于”该客户。

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

1

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

With要跟踪正在购买的资源,最好实施一个临时的“temp_transaction”数据库表,您的代码可以通过该数据库表进行咨询,以确定用户是否处于预订过程中,例如某个特定座位。

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

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

+0

@CodeCaster有一个宽限期的建议是一个好主意,因为它允许用户在预订时优先考虑资源,而无限期地捆绑资源(从而失去销售额)。这可以通过临时表实现而不需要任何cron来实现。 – venzen 2011-12-24 13:36:29