禁用 WordPress 的 wp-cron 計畫

如果你的 WordPress 的 wp-cron 計畫是正常的工作,且流量不多,就不必 disable wp-cron 這功能,就讓它正常運行,對網站的影響不大;WordPress 在默認情況下,如有設置計劃的任務存在時,有人訪問您的網站時,就會觸發 wp-cron.php 動作。

從上面的解釋來看,沒有時麼不對的地方,但是當流量變大時,或安裝一些安全外掛時,這就會變成一個不好用的小程序:

  • 當網站訪問用戶增加或特別多的時候,每瀏覽一次網頁,都會去檢查當前是否有任務要執行,多次檢查計劃的任務,增加主機的負載及加載時間。
  • 又當網站的訪問用戶很少或者安裝了靜態緩存外掛,計畫的任務可能又不運行。
  • 安全防護外掛,防止了某個計畫腳本運行,因此 wp-cron 又不起作用了。

最近維護的一些網站,也有都發生 wp-cron 不乖乖工作,也查不出來是甚麼原因造成的,但這會影響 UpdraftPlus 或其他定時備份外掛,不會在指定的時間備份網站,這對一個網站的安全來說是一個隱憂。

當 WordPress 的 wp-cron 不工作,可以將 wp-cron 關閉它,而用主機的定時計畫 crontab 來取代。

Disable wp-cron

修改 wp-config.php 文件中,添加以下代碼來禁用 WordPress 默認的 wp-cron 運行:

在主機端開啟一個 crontab 計畫:

添加下面的指令 ( 以 EasyEngine 為例 ):

其他系統:( 請自行修改為正確的網站路徑 )

以上的指令是每 10 分鐘運行一次 wp-cron。你可以更改 */15 或 */5 使其更長或更短的時間來運行一次。

如果你是用虛擬主機,可以查看 cPanel 後台,有沒有 Cron Jobs 的功能,不一定每一家主機商都會開啟這個功能,設置上可參考下面鏈接的教學。

cPanel 開啟 Cron Jobs 教學

如果你是一個高流量的網站,也建議將 WordPress 默認的 wp-cron 關閉。

使用主機的 crontab 運行,wp-cron 將改由獨立的 PHP 進程運行,所以它不會干擾任何訪客頁面請求,也大大降低了 CPU 的負載。

參考文件:
Why WP-Cron sucks
Rocket-Nginx


Sending
User Rating 5 (10 votes)

發表迴響

Required fields are marked *.


%d 位部落客按了讚: