我正在构建一个 Web 应用程序,该应用程序需要我为客户保留 30 分钟的座位或在删除预订之前关闭浏览器。有什么建议最好的方法吗?
我想在 MYSQL 中添加一条记录并运行一个 cron 作业,但这不会为用户提供最新的结果。有什么建议吗?
谢谢!
写一个有有效期的记录。编写查询时使用该到期日期。经常清理过期的记录。
然而,关闭浏览器更加复杂且不可靠。在 http 中与服务器的连接是无状态的,因此您真的不知道浏览器何时关闭。当不再有任何轮询更新时,您可以使用 ajax 定期轮询并删除记录。
这个问题实际上是2个问题:
和
expire_time
在您的预订表中添加一个字段。您可能有一些逻辑来查看仍有多少座位可用,将其添加expire_time
到该逻辑以便忽略过期记录。
然后编写一个定期调用的脚本或函数(cron 有效,也是如此register_shutdown_handler()
)来清理过期的记录。
这样,如果您的 cron 因某种原因失败或变慢,您就不会意外阻止新的预订。您甚至可以完全跳过清理步骤并受到(次要)性能影响。
我相信它应该通过会话解决,而不是 mysql。
但是如果你坚持,你应该在每次页面被点击时更新项目,你也可以做一些清理
编辑 是的,当然。预订系统必须是多用户的。如果一位用户进行预订,则另一位用户一定无法获得座位。
是的,简单的解决方法就是在其中添加一个名为 reserved 的新列,该列将指定直到它被保留的时间。
为什么你需要 cron 呢?
顺便说一句:会话存储在服务器而不是客户端上。cookie 存储在客户端而不是服务器中。