PHP 本身是無法建立定時任務的,但是 WordPress 自帶了一個偽定時任務 (Cron)API,非常的方便好用,包括 WordPress 本身的定時釋出文章都依賴於這個 API
它的原理就是將建立的定時任務儲存到資料庫裡,當有人訪問的時候就去判斷一下是否到時間需要執行這個定時任務,如果到時間則執行。
因為這種原理,所以執行的時間可能會有一些偏差,但隨著網站的瀏覽量攀升和網路爬蟲的不斷訪問,會讓定時任務執行的時間越來越準確。
想在 WordPress 裡建立一個定時任務一般只需要兩個函式就行,下邊介紹一下建立定時任務的函式 wp_schedule_event()
使用方法
|
1 |
wp_schedule_event($timestamp,$recurrence,$hook,$args); |
引數
$timestamp
(整數)(必須) 第一次執行此定時任務的時間,需要傳一個時間戳,一般情況下都是當場執行,但不能用 time() 函式,而是用 WordPress 的時間函式 current_time(),下邊在仔細介紹。
預設值:None
$recurrence
(字串)(必須) 執行頻率。每隔多長時間執行一次。可以填寫 hourly(每小時執行一次) 、 twicedaily(每天執行兩次,也就是 12 小時執行一次) 和 daily(24 小時執行一次) 。
預設值:None
$hook
(字串)(必須) 執行的鉤子。在執行定時任務的時候會呼叫這個鉤子,往這個鉤子掛在函式即可實現定時執行函式。關於鉤子:https://www.weixiaoduo.com/tag/hook
預設值:None
$args
(陣列)(可選) 傳遞的引數,會被傳遞到掛載到定時鉤子的函式裡的引數。
預設值:None
返回值
(布林 | null) 如果新增成功則返回 null,不成功則返回 False
例子
|
1 |
if(!wp_next_scheduled('test'))wp_schedule_event(current_time('timestamp'),'twicedaily','test'); |
首先使用 wp_next_scheduled() 函式判斷是否已經建立,如果沒建立則建立一個定時任務。
把需要執行的程式碼掛載到 test 鉤子上就行了。
其它
有關定時任務的文章:https://www.weixiaoduo.com/tag/cron