單獨批次性任務採用MySQL定時器解決需求

有時候咱們在開發的時候會遇到一些需求是在某個固定的時間段實現某些特殊功能,只作一次或者有規律的每分鐘一次每小時一次,那麼這個時候咱們能夠啓用MySQL的定時器來幫忙解決該問題。ajax

好比,有一個場景是要求今天中午12點,用戶的全部記錄被清空,咱們固然能夠使用用戶來觸發這個機制,可是用戶不必定是準點訪問,若是以時間對比 好比 獲取當前時間和12點比對,若是大於則看事件是否觸發過了,若是觸發過再也不觸發,若是沒有則觸發。可是這樣依然是延遲的處理觸發機制,並且是依靠用戶來觸發,若是用戶不來訪問,該機制將永遠得不到觸發。數據庫

與此同時,有一個定時訪問來模擬用戶就誕生了,好比用ajax每分鐘輪訓訪問一次來幫助觸發,這樣的話也能夠,不過比較消耗資源。還有一種是採用Linux crontab定時腳本幫助觸發,能夠只觸發一次。困難處是要一些比較高的權限來處理服務器。服務器

其實,簡單的邏輯觸發能夠由數據庫來完成,數據庫有定時器事件。好比我想每分鐘更新 test_user表中id=1的用戶的num爲1事件


CREATE DEFINER=`root`@`localhost` EVENT `trigger` ON SCHEDULE EVERY 1 MINUTE STARTS '2016-12-01 12:00:00' ON COMPLETION NOT PRESERVE ENABLE DO update test_user set num=1 where id=1crontab

該定時器從2016-12-01 12:00:00後每分鐘去執行一次 你也能夠定義爲一次事件,防止執行屢次資源

相關文章
相關標籤/搜索