0

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

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

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

但是,用户放弃该网站的可能性不大,我看不出有什么方法可以检查。该插槽将保持“锁定”状态。我在想,可能有一种方法可以自动重置状态,例如在“锁定”后 120 秒并向用户显示倒计时。这甚至可以增强兴奋因素。

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

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

我将不胜感激任何想法。谢谢,山姆

4

1 回答 1

0
  1. 在您的数据库中,您的状态表添加一个datetime字段。

  2. 当有人锁定时,slot您还可以使用保存当前时间NOW()

  3. 当有人咨询您执行的插槽并更新和释放非活动插槽时

    Update slots
    SET locked = false 
    WHERE `datetime`> NOW() - INTERVAL 15 MINUTE;
    
    SELECT *
    FROM slots
    WHERE locked = false;
    
于 2017-04-05T18:19:44.973 回答