MySQL - 在x秒不活动后自动更新行(设置到期时间)

时间:2017-04-05 18:09:05

标签: php mysql cron mysql-event

对于艺术项目,我正在尝试设置订单网站。 该概念允许用户预订最多。每个艺术家的两个时段。每位艺术家有12个插槽,但每个插槽都有特定的定义(因此每个插槽都是唯一的)。这些插槽仅在非常有限的时间内可用,并且有望快速预订。因此在短时间内会有很多请求。我必须确保每个文章/广告位一次只提供给一个用户,并且无法重复预订。

我的想法是,检查下一个未预订的插槽(status =“free”)并在该请求上将表中相应行的状态更新为status =“locked”。如果用户实际进行到预订插槽,状态更新为“已预订”。

如果用户点击“取消”,我可以通过将行更新为status =“free”来发布文章。

但是,用户不可能只是放弃网站,我也没有办法检查这个问题。该插槽将保持“锁定”状态。我在想,可能有办法自动重置状态,例如在“锁定”之后120秒并向用户显示倒计时。这甚至可以增强兴奋因素。

我认为cron作业不会起作用,因为我需要将锚点作为行的最后一次更新,而不是特定的日期时间。

我查看了MySQL事件,但了解到我无法操纵它附加到的表的数据。

我非常感谢任何想法。 谢谢, 萨姆

1 个答案:

答案 0 :(得分:0)

  1. 在您的数据库中,您的状态表会添加;字段。

  2. 当有人锁定datetime时,您还可以使用slot

  3. 保存当前时间
  4. 当有人查阅您执行的插槽并更新并释放非活动插槽时

    NOW()