防止在线酒店预订中的竞争条件

时间:2012-10-24 04:48:44

标签: php mysql race-condition

之前我问过这个问题,人们给了我解决问题的方法,但现在我的问题发生了变化。在我的数据库中有一个名为rooms的表之前。它有一个hold字段,当有人进行预订时,我会在将来花15分钟时间为该用户保留它。如果该用户未在15分钟内完成预订,则该房间将再次可用。这是我之前问题的解决方案。

但是现在我不再有房间的桌子了。我只有房型和预订表。 Roomtype获得了房间的名称价格信息,当然还有id字段。预订表获得checkin checkout roomtypeid和有关用户的信息。由于我没有房间表,我无法想办法防止多个用户同时预订单个房间。

我的问题是如何在没有房间桌的情况下预防比赛条件?如果不是太多问我想解决方案只有sql和php。 Here is a link to my previous question

编辑:我发现这篇文章,这就是为什么我不再拥有房间的桌子了。 link

1 个答案:

答案 0 :(得分:1)

您可以在预订表中添加临时预订(带有临时标志/字段),如果预订未在15分钟后结束,请将其删除。

此外,如果多个用户同时尝试预订最后一个房间,您应该再次检查预订的每个步骤的可用性,以通知用户最后一个房间刚刚被拍摄,并提出另一个房型等。