Drupal 運用Crontab 來trigger Elysia Cron
elysia cron是一個可以細部控制drupal cron的模組,像是定時的清除快取、定時的備份、每隔幾小時發信等工作。
elysia cron主要有以下這些功能:
- 設定每個cron的執行的順序與頻率
- 同時執行cron
- 為cron分頻道
- 停用某些cron
- 詳細的紀錄cron的執行時間與次數
- 提供API給模組使用
- 支援自訂cron job
當你有這些需求時可以使用這個模組:
- 不想再巔峰時刻執行cron
- 不想一次執行所有的cron
- 管理微調快取cron
- 同時執行cron
- 關閉/開啟你想要的cron
- 分開debug cron
當我們安裝好elysia cron可以直接在設定/系統/cron settings看到模組已經執行起來了
選擇設定頁籤
展開CLICK FOR HELP AND CRON RULES AND SCRIPT SYNTAX可以看到時間的設定範例
SINGLE JOB SETTINGS就是我們設定時間跟頻道的地方 像是我們這邊以ctools_cron為舉例
不過我們必須要注意的是elysia cron並不會依照我們所設定的時間來幫我們執行cron所以這個時候我們就必須要依賴crontab(#2)來幫我們trigger cron 這個時候要注意Run cron on visitor’s requests, every要設定Never
接下來就是設定crontab了 以ubuntu為例
sudo crontab -e
cron_key在你的報告/狀態報告可看到執行cron的網址
像這邊我們就設定每一分鐘 使用curl來觸發執行cron的網址 “>/dev/null 2>&1″(#3)這段是來忽略輸出log檔的否則/root資料夾底下會有一堆空的log檔
只要設定好之後crontab就會幫我們每一分鐘去ping執行cron的連結,elysia cron會在幫我們檢查時間是否到了
這樣一來cron job就會依照elysia cron所設定的時間去執行了,這樣一來也會減少執行cron的負擔囉!!
這邊簡單的解釋一下”>/dev/null 2>&1″這段的作用
我們將curl的log給導入/dev/null這個地方你就將它當作垃圾桶
“>”這個符號表是將輸出導入 “2”跟”1″則是curl的狀態
1代表的是正常輸出
2代表錯誤輸出
之所以會這樣是因為curl每執行就會產生一次空的log檔在/root
所以才用這種方式來解決產生空檔的問題囉