Ris*_*Sun 6 php mysql race-condition
我正在使用PHP和MySQL编写酒店预订软件.我已经完成了它,但我遇到了竞争条件问题.例如,只剩下一个标准房间,当2位客人都选择它时,它显示两者均可用.我尝试通过在客人点击确认之前再次检查房间来修复它,但仍有问题.我还尝试将房间状态设置为待处理,无论谁先点击确认,但如果客人决定不支付或只是关闭浏览器,我无法弄清楚如何将其更改回可用状态.我搜索了SO的答案,但我没有找到明确的答案.提前致谢
Tro*_*ott 11
一种解决方案是向数据库中的表添加两列.一列是会话ID或用户ID或者为房间提供的任何用户.第二列是时间戳,指示该要约何时到期.
然后,在您的应用中,仅显示保留列中具有过期时间戳的房间.(将初始时间戳设置为0以使其开始过期.)选择房间后,再次检查该列.如果那里有未到期的时间戳,则用户会收到"抱歉,你太慢"的消息.否则,将时间戳放在未来15分钟或其他任何地方,然后继续.
你在旅游网站和购票网站上看到了很多这样的地方,上面写着"我们再为你们保留这些座位14分钟.请完成交易,否则它将被释放等等等等."
| 归档时间: |
|
| 查看次数: |
2709 次 |
| 最近记录: |