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
所以才用這種方式來解決產生空檔的問題囉