我正在使用PHP和MySQL编写酒店预订软件。我已经完成了很多工作,但是遇到了比赛条件问题。例如,仅剩一间标准房,当两个客人同时选择时,这两个人都可以使用。我尝试通过在客人单击付款前的确认按钮时再次检查房间来修复它,但这仍然有问题。当有人先单击确认时,我也尝试将房间状态设置为待处理,但是如果客人决定不付款或只是关闭浏览器,我不知道如何将其更改回可用状态。我在SO中寻找答案,但实际上并没有找到明确的答案。提前致谢
最佳答案
一种解决方案是将两列添加到数据库中的表。一栏是会话ID或用户ID或正在提供会议室的任何用户。第二列是时间戳,指示该报价何时到期。
然后,在您的应用中,仅在保留列中显示时间戳已过期的房间。 (将初始时间戳记设置为0,以使其开始过期。)选择房间后,请再次检查该列。如果那里的时间戳记未到期,则用户会收到“抱歉,您太慢”消息。否则,将时间戳记放在未来的15分钟之内,然后继续。
您会在旅行网站和购票网站上看到很多这样的信息,上面写着“我们将再为您保留这些座位14分钟。请在此之前完成交易,否则它将被放开。”