三月 12, 2016 | 後端和Drupal

那些Drupal強者都愛用的排程模組,別說你都沒聽過Elysia Cron

程式開發時,自動化是一項非常重要的主題(心聲:程式當然就要會自動化啊),普通的工程師可能一段程式每次要處理時,都需要**手動Trigger**這一段程式碼,才能夠執行。而厲害的工程師,則是寫完程式之後,通過**排程的方式,讓系統時間到了之後自動執行程式**。Drupal本身內建的Cron已經可以讓普通的工程師晉升為厲害的工程師了,而然距離傳說中的超強工程師,還有一段差距,原因是超強工程師**不僅能夠排程,還能夠將所有需要自動化程式分門別類,進行複雜的交叉排程作業**。如果今天的你,想要成為一位「超級強」的工程師,非看這篇文章不可。

前言

程式開發時,自動化是一項非常重要的主題(心聲:程式當然就要會自動化啊),普通的工程師可能一段程式每次要處理時,都需要手動Trigger這一段程式碼,才能夠執行。而厲害的工程師,則是寫完程式之後,通過排程的方式,讓系統時間到了之後自動執行程式。Drupal本身內建的Cron已經可以讓普通的工程師晉升為厲害的工程師了,而然距離傳說中的超強工程師,還有一段差距,原因是超強工程師不僅能夠排程,還能夠將所有需要自動化程式分門別類,進行複雜的交叉排程作業。如果今天的你,想要成為一位「超級強」的工程師,非看這篇文章不可。

現行Cron排程的使用

如果你已經會使用Drupal的Cron模組,一定會覺得自動化並不困難,只需要設定好以下兩點:

  1. 設定時間執行Cron排程的時間間隔。
  2. 檢查狀態報告,得知最近一次執行時間。

在這樣的狀態下,您的Drupal系統已經可以進行每日的自動化作業了,而Drupal的Cron作業裡面包含的作業如:執行更新檢查、執行系統刪除暫存檔作業、搜尋模組進行文章index作業...非常多的功能,目的都是為了讓系統更方便,不需用進行其他人為的操作即可完成。若您的自動化需求並不多,只是需要做些系統內建簡單的排程作業,則Drupal內建的Cron模組即可完成。

系統可以「自動」做更多事情嗎?

如果現在您的網站是一個功能多元且複雜的網站,您可能開始需要系統能夠自動處理更多的任務。舉例來說,如果您有電子報系統,也許您需要每隔3分鐘寄送一次的Email,又也許您的網站需要從外面定時擷取新聞,可能10分鐘一次。再加上,如果您需要系統定時發佈文章,那麼您的系統則需要每分每秒來檢測現在是否到達了發文時間了。在工作不單一的情況下,原生的Drupal Cron已經供不應求。因此在這樣的情況下,我們會需要一個定時且能夠分工的Cron功能,這個時候Elysia Cron就是為了解決這樣的問題。

超強排程模組Elysia Cron

這個模組其實就是更強化了Drupal的核心Cron模組,並且可以跟伺服器整合,達到您任何想要達到的自動化需求。而接下來,就讓小編開始介紹這個神奇的模組吧。

主要特點

  1. 將Cron Task分別處理,或建立Task分類集合。
    在本來的內建Cron裡面,Drupal只能夠一次執行全部的任務,而Elysia Cron一個很強大的功能不僅能夠個別執行每一個Cron Job,而且能夠將想要一起執行的Cron Job進行分類集合
  2. 針對Task進行頻率或時間設定,將很厚重的任務均分到更短時間來執行吧。
    在這個模組中,您可以選在"頻率"來排程或者“時段”來排程,例如您可能想要5min執行一次,或著想要星期一到星期五半夜02:00-04:00,都是很輕鬆可以辦到的,另外此模組還提供了權限,讓我們調整,讓系統決定同時執行任務時的先後順序。

     
    可以直接選擇系統提供的區間,也可以考慮以下自訂時間規則的寫法:
    */15 * * * * : 每15分鐘執行一次
    0 2,14 * * *: 在每天的02:00~14:00執行任務
    0 2 * * 1-5: 每週一到週五凌晨兩點執行
    0 12 1 */2 1: 每兩個月執行一次,並且在每個月第一天的12:00分執行
    
  3. Multi-Task多工,並且提供統計結果
    除了可以根據Task進行不同頻率與時間外,每個Task或分類集合Task,彼此可以不互相影響,讓系統根據各自的時間區隔,同樣進行不同的自動化任務,對於有多重自動化需求的工程師來說,實在是太讓人興奮了。更重要的是,模組提供了統計功能,我們可以得知每個任務的loading,來做進一步調整 :)

  4. 針對Task進行權重區分
    如果當系統,真的遇到同時有很多任務必須要同時執行的時候,權重就是非常重要的一個選擇,孰先孰後,影響到相對時間內,哪些任務優先處理完畢。
  5. 提供API串接如果您是一個Drupal的工程師,這個功能對您來說實在是太重要了,只需要按照官網所寫,即可撰寫自己的Cron API前往官方網站查看api,至於怎麼寫,這裏就不詳述了。
  6. 提供選擇把不需要執行的Cron任務關閉。
  7. 跟伺服器整合,並且自行定義自己的cronkey。
    通過設定伺服器的crontab,來Trigger網站的Cron。如果您不熟悉CronTab,可以參考這篇文章CronTab教學,完美整合網站的自動化排程。

“說到這裏,應該有心動要安裝吧,快點動手下載並且安裝”

drush en elysia_cron -y


前往此下載

結論

從本來只有核心Cron的情況下,通過Elysia Cron將網站的整合與功能性大幅度的提高,也可以善用伺服器的資源,讓網站可以在半夜或特定時段執行特定任務,也同樣通過這個模組,可以分攤原本需要一起執行的Cron Job,對於大型網站來說,真的是個救星。Enjoy!也歡迎大家一起討論。