【问题标题】:Shopping Cart Timeout购物车超时
【发布时间】:2012-02-12 20:51:55
【问题描述】:

如果我正在编写一个票务系统,客户选择了票,我想将其锁定 3 分钟(如票主),直到他们完成订单或时间用完,我该怎么做?我想避免让客户放弃他们的会话/应用程序崩溃,然后将票证永远锁定在数据库中。

我将 nHibernate 用于我的 ORM 和 C#。

【问题讨论】:

    标签: c# asp.net-mvc-3 nhibernate timeout ticket-system


    【解决方案1】:

    只需有一个单独的表来保存所有当前的预订。例如:

    **Reservations**
    UserID
    TicketID
    ExpiryDate
    

    这将不依赖于会话。您甚至不需要删除过期记录,当新客户查询机票时,会在过期日期 > 现在的预订表中找到所有可用的座位。

    避免使用更复杂的定时事件系统和类似的东西,保持简单。

    【讨论】:

      【解决方案2】:

      具有票证到期服务,可定期解锁过期票证锁。 记录到期时间和票证(可能带有会话 ID)。 订单可以在不再需要时将其删除,或者在失败的情况下将自动解锁。

      【讨论】:

        【解决方案3】:

        如果您可以识别每张工单,您可以为该工单分配锁定信息,其中包含有关用户、订单等的数据,当然还有 - 锁定过期时间的时间戳。

        如果其他用户想要选择票,您只需要检查此时间戳即可查看锁定是否已过期。

        【讨论】:

          猜你喜欢
          • 2018-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多