WordPress 很忙

使用 WordPress 架站的你知道它每天都很忙嗎?在忙什麼呢?

當然是你交辦的事囉!在你看到這篇文件之前,應該不知道 WordPress 有一個 Cron Job 的機制來處理這些排程的工作吧?

高登本來也不是很在意 WordPress 排程這件事,只是會在主機的 Apache Log 裡面看到,主機定期就會執行在根目錄下面的 wp-cron.php 這支程式,那這支程式到底在作些什麼事呢?

話說某企業官方部落格因為耗用太多資源而被國內某大主機商停權,而就在幫他們處理的過程當中發現了幾個有趣的現象:

  • 主機商丟來的的 MySQL slow query log 裡面指出網站的一支「nggallery.php」程式造成大量的 MySQl 資料庫查詢而佔用太多資源!但是...翻遍主機後台及檔案就是找不到這個 NextGEN Gallery?!正好又逢農曆七月到了,莫非...
  • 因為被停權了,所以就先暫時搬到我的 VPS 抓蟲(對方擺明就是要你搬走,隨便掰一個理由就趕人),在檢查網站檔案的時候,發現根目錄的 wp-cron.php 被更名了!也就是有人懷疑是這支程式搞的鬼所以把它廢了!
  • 但是就算沒有排程工作網站有時還是會耗用許多資源

所以大家才有緣看到這個 WP-crontrol 外掛的介紹

WP-crontrol 排程管理外掛

請由 WordPress 後台搜尋及安裝這個外掛,網址我就不貼了

WordPress 排程管理外掛 WP-crontrol

裝好啟用之後,請到左邊欄[工具]找到這個 Crontrol 外排的設定頁面

WordPress 排程管理外掛 WP-crontrol

這個排程表有五個欄位:

  • Hook Name: 排程的名稱
  • Argunents: 執行的參數
  • Next Run: 下次執行時間
  • Recurrence: 排程週期
  • Actions: 你可以執行的作業:
    • Edit: 編輯
    • Run Now: 馬上執行
    • Delete: 刪除排程

這些排程大部份可以由名稱猜到它的功用,例如:

  • wp_version_check: 檢查 WordPress 版本
  • wp_update_themes: 檢查版型是否有更新
  • wp_scheduled_delete: WordPress 定期清理
  • wp_scheduled_auto_draft_delete: WordPress 定期清理自動草稿
  • wp_db_backup_cron: WordPress Database Backup外掛的排程
  • wp_update_plugins: 檢查外掛是否有更新
  • hyper_clean: Hyper Cache 快取外掛的定期清理

如果你有不知道幹什麼的排程名稱也歡迎提出來大家研究

如果你有要自己新增的排程也可以用這個外掛來新增

WordPress 排程管理外掛 WP-crontrol

安裝了這個外掛之後,發覺有一些外掛在移除的時候忘了把排程也刪除,真是糟糕!如果你也有這種外掛的話正好可以清理一下門戶

如果你的網站明明就沒什麼人瀏覽,卻又耗很多資源的話,那這個排程是你應該要檢查的項目

但是上面提到的網站耗用資源的原因並不是因為這個排程表,聰明的你應該想到既然 wp-cron.php 都被改檔名,怎麼可能會是排程引起的呢?而那個網站的問題一般虛擬主機租用戶可以解決的(除非你的主機商願意為你增設防火牆規則)

如果網站達到一定的規模就要有主機更上一層樓的心理準備吧!

至於 WordPress 的排程最好不要用前面天才的方法停掉,因為這些排程都是必要的,甚至最基本的排程發文也是利用它來達成的