2

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

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

4

3 回答 3

7

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

**Reservations**
UserID
TicketID
ExpiryDate

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

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

于 2012-02-12T21:56:58.320 回答
0

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

于 2012-02-12T21:03:02.150 回答
0

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

如果另一个用户想要选择票,您只需要检查这个时间戳来查看锁定是否已过期。

于 2012-02-12T21:54:35.453 回答