-6

我正在构建一个 Web 应用程序,该应用程序需要我为客户保留 30 分钟的座位或在删除预订之前关闭浏览器。有什么建议最好的方法吗?

我想在 MYSQL 中添加一条记录并运行一个 cron 作业,但这不会为用户提供最新的结果。有什么建议吗?

谢谢!

4

3 回答 3

5

写一个有有效期的记录。编写查询时使用该到期日期。经常清理过期的记录。

然而,关闭浏览器更加复杂且不可靠。在 http 中与服务器的连接是无状态的,因此您真的不知道浏览器何时关闭。当不再有任何轮询更新时,您可以使用 ajax 定期轮询并删除记录。

于 2013-03-29T15:03:05.540 回答
0

这个问题实际上是2个问题:

  • 你如何清理旧记录

  • 你如何忽略过期的记录。

expire_time在您的预订表中添加一个字段。您可能有一些逻辑来查看仍有多少座位可用,将其添加expire_time到该逻辑以便忽略过期记录。

然后编写一个定期调用的脚本或函数(cron 有效,也是如此register_shutdown_handler())来清理过期的记录。

这样,如果您的 cron 因某种原因失败或变慢,您就不会意外阻止新的预订。您甚至可以完全跳过清理步骤并受到(次要)性能影响。

于 2013-03-29T15:04:59.313 回答
-1

我相信它应该通过会话解决,而不是 mysql。

但是如果你坚持,你应该在每次页面被点击时更新项目,你也可以做一些清理

编辑 是的,当然。预订系统必须是多用户的。如果一位用户进行预订,则另一位用户一定无法获得座位。

是的,简单的解决方法就是在其中添加一个名为 reserved 的新列,该列将指定直到它被保留的时间。

为什么你需要 cron 呢?

顺便说一句:会话存储在服务器而不是客户端上。cookie 存储在客户端而不是服务器中。

于 2013-03-29T15:04:17.950 回答