2017-04-05 60 views
0

對於一個藝術項目,我試圖設置訂單網站。 該概念允許用戶預訂最大。每個藝術家有兩個時間段。每個藝術家有12個插槽,但每個插槽都有特定的定義(因此每個插槽都是唯一的)。插槽只能在非常有限的時間內使用,並希望能夠快速預訂。所以在短時間內會有很多要求。我必須確保每篇文章/插槽一次僅提供給一位用戶,並且不能雙重預訂。MySQL - 在不活動x秒後自動更新行(設置過期時間)

我的想法是,檢查下一個未預訂的插槽(狀態=「空閒」),並根據該請求將表中相應行的狀態更新爲status =「locked」。如果用戶前往實際上預定插槽,狀態更新爲「黃牌警告」。

如果用戶點擊「取消」我可以通過行更新到狀態=「免費」發佈的文章。

但是,它不是不太可能的是,用戶只是放棄了網站,我沒有辦法檢查這個網站,這個網站仍然是「鎖定」的。我想,可能有辦法自動重置狀態,例如120秒後「並向用戶展示倒數計時,甚至可以啓用激動因素。

我不認爲一個cron工作會工作,因爲我需要錨點是該行的最後更新而不是特定的日期時間。

我看着MySQL事件,但瞭解到我無法操縱它所附表的數據。

我將不勝感激任何想法。 謝謝, 山姆

回答

0
  1. 在你的數據庫的狀態表中添加datetime場。

  2. 當有人鎖定slot還使用NOW()

  3. 保存當前的時間當有人請教您執行插槽和更新,並免費無效插槽

    Update slots 
    SET locked = false 
    WHERE `datetime`> NOW() - INTERVAL 15 MINUTE; 
    
    SELECT * 
    FROM slots 
    WHERE locked = false; 
    
+0

哇。那很快。我的理解是否正確,「INTERVAL 15 MINUTE」是一種可以根據我的需要改變的設置?你能解釋一下,「當有人諮詢老虎機時」是什麼意思?謝謝! – berlinaise

+0

可能也需要過濾一個特定的ID或東西。 – Augwa

+0

是的,'15分鐘'可以'1小時'檢查[** HERE **](https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html)爲所有選項。 –