點擊鏈接加入群【php/web 學習課堂】:https://jq.qq.com/?_wv=1027&k=5645xiw
歡迎大家加入,一起討論學習
這里我們要完成的定時任務,比較簡單
效果:每過X秒 某一些用戶積分 加X
第一步:我們先創建一個表和插入數據
看看效果:
ok,表和數據做好了,我們說一下需求:
需求1:沒經過2秒管理員的積分加1,字段is_adm為1的則是管理員
以上為添加表和數據,並提出需求
--------------------------------分割線--------------------------------
以下內容,我們會提到如何啟動定時任務,來完成我們的需求
首先第一步,我們要檢查我們數據庫,是否開啟了event(事件)
運行以上代碼,如果你的結果,Value字段的值為"OFF",代表你的事件屬於關閉狀態,那么我們就要開啟它,運行以下代碼:
運行之后,再返回上一個,再次檢查事件的狀態,當結果為"ON",則代表你的事件已開啟,我們就繼續往下走。。
既然是定時任務,那么我們就要封裝一個函數,流程是這樣的:
- 封裝一個函數
- 封裝一個事件
- 事件開始運行,滿足條件,調用 1(封裝的函數)
那么我們先來封裝一個函數:
運行以上代碼成功之后,大家不用提心吊膽,不會立刻修改你的數據,因為這里只是封裝了一個函數,我們並沒有調用它,它僅僅是存在。所以需要寫一個事件,來調用它
運行以上代碼,成功之后,大家也別着急,還不會立刻運行此事件。雖然在上面,我們已經開啟了event。但是我們還要單個來運行,指定一個事件來運行,就跟訪問接口一樣,指定一個接口。。。
這里能看見,開啟事件,指定的是 e_test 這個事件名字,跟我們上面創建的是一樣的,那么運行這一段代碼之后,你會發現,你的表 test_name 里,is_adm = 1 的行,字段為 integral(積分) 的會每 2秒 加1
那么一個簡單的定時任務,我們完成了。
噢,對了,關閉單個事件,使用以下的代碼:
運行之后,就會停止對 e_test 事件的使用
以上需要注意:
- event默認情況下,都是OFF關閉狀態,在MYSQL配置里可以找到,如果你在配置里修改成ON,就會默認成ON了
- 關閉數據庫之后,如果你的event還是OFF,也會因為配置里默認的OFF因為,而停止
- 當event關閉之后,你的單個事件屬於開啟狀態,那么當你開啟event之后,單個事件狀態依舊是開啟的
- 如果你要關閉某個事件,請使用最后一個“關閉事件”的代碼來關閉,不要使用event關閉,會影響到其他的事件
- event如同是總閘,關閉之后,所有定義的事件斷電