【发布时间】:2015-12-24 06:37:30
【问题描述】:
我之前问过这个问题,人们给了我解决问题的方法,但现在我的问题发生了变化。在我的数据库中有一个名为 rooms 的表之前。它有一个hold 字段,当有人进行预订时,我会在未来 15 分钟内为该用户保留它。如果该用户未在 15 分钟内完成预订,则该房间将再次可用。这是我之前问题的解决方案。
但现在我不再有客房桌了。我只有房间类型和预订表。 Roomtype 得到了房间的名称价格信息,当然还有 id 字段。预订表有 checkin checkout roomtypeid 和有关用户的信息。由于我没有房间表,所以我无法找到一种方法来阻止多个用户同时预订一个房间。
我的问题是如何防止没有房间表的比赛条件?如果问的不是太多,我希望解决方案只有 sql 和 php。 Here is a link to my previous question
编辑:我找到了这篇文章,这就是我不再有房间表的原因。 link
【问题讨论】:
-
听起来您可以在您的预订表中添加一个初步预订,并在 15 分钟后过期。
-
房间桌似乎是一张重要的桌子,可以将所有东西放在一起;为什么要删除它?
-
@Jack 我删除了它,因为我不再需要它。我还找到了一种更好的方法来跟踪有多少房间可用,有多少房间没有。
-
@JoachimIsaksson 在我不断更新保持字段之前我这样做的方式。所以我不必插入或删除任何东西。我刚刚检查了该字段,如果它可用,我会更新它。我想知道是否可以找到类似的解决方案,这样我就不必编写定期从数据库中删除条目的东西。在我的另一篇文章中,有人建议我使用 cronjob,但我不知道那是什么。
-
当你使用事务表时会被锁定。
标签: php mysql race-condition