【问题标题】:Logical flow required for a real time online seats booking system in PHP?PHP中实时在线座位预订系统所需的逻辑流程?
【发布时间】:2013-06-05 03:27:47
【问题描述】:

我正在使用 PHP 开发在线 Web 应用程序。该系统是关于一家旅游公司的座位预订系统。我有一个预订表格,其中包含一个包含旅游代码列表的选择框。每当用户选择旅游代码时,Ajax 请求都会获取该旅游代码当前可用的座位数。在此之后,用户选择他需要预订的座位数量并在表格中填写该乘客数量的详细信息并提交表格。

由于本系统在线,可能会出现如下情况:

用户 1 和用户 2 已登录并尝试为 tourA 预订座位。 tourA 仅提供 10 个座位。用户 1 想预订 7 个座位,用户 2 想预订 5 个座位​​。 两者都点击了预订表格链接,并且都将可用座位号设为 10。两者都已开始填写表格,因为表格有点长。两者都需要一些不同的时间来填写表格并根据打字速度提交。两个用户都认为他们将获得预定数量的座位。但是两者都提交了时差较小的表单,她认为用户 B 首先提交的表单将获得预订,而另一个用户 A 将收到一条错误消息,指出相应的座位数不可用。所以在这里用户A感到困惑,因为他在提交表单后收到了现在座位数可用的消息,他收到消息要求座位数不可用。

如何避免上述情况?我需要实时预订系统背后的逻辑流程。任何人都请解释一下这个以及如何在 php 中实现这一点。

我正在考虑一旦用户选择座位数;使用 ajax 我将更新数据库表中的字段,该字段维护这个可用的座位数,并为该会话预订那个座位数。但是这里可能会出现一个代码,例如如果用户选择座位并开始填写表格,但由于任何原因,如果他没有提交预订表格,那么问题就会出现,因为我们已经从数据库中删除了所需的座位数量,但预订程序不是由用户完成。那么如何恢复它以及我们更新了表格然后其他想要预订座位的用户我喜欢座位数量不可用并且他们将消失并且不会再次检查它。由于这家旅游公司的业务可能会下降。

请注意,每个用户都需要登录应用程序才能预订座位。

朋友们,你可能会发现这个问题是家庭作业,但在这里我没有任何可靠的逻辑解决方案。 请指导我,并请向我解释克服上述情况的系统逻辑流程。如果有人在 PHP 中有一个简单的代码示例供参考,它也会对我有所帮助。

期待积极的答复

谢谢!

【问题讨论】:

    标签: php logic business-logic


    【解决方案1】:

    确实没有完美的方法来做到这一点。你基本上有3个选择

    1. 一旦用户表示要保留资源,就立即保留资源(nycballet.com 就是这样做的)
    2. 在用户承诺购买时保留资源(这就是 travelocity 所做的)。
    3. 让两个用户都购买该资源,并让一个人回滚其中一项交易(也就是超额预订)

    您最终选择哪个是一项业务决策,这取决于您的漏斗形状以及您的用户对 UX 问题的敏感程度。

    【讨论】:

    • 谢谢先生!为您的答复和解决方案。我有一些疑问,所以我请你解释一下。根据我的理解,如果我按照解决方案一,如果用户保留资源但未完成预订过程,那么保留的资源将如何被释放以及它应该被释放的标准是什么?
    猜你喜欢
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 2022-08-09
    • 1970-01-01
    相关资源
    最近更新 更多