禁用 WordPress 的 wp-cron 計畫

·

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

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

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

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

禁用 wp-cron

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

Disable wp-cron (禁用 WordPress 計畫任務):

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

define('DISABLE_WP_CRON', true);

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

crontab -e

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

*/10 * * * * cd /var/www/example.com/htdocs; php /var/www/example.com/htdocs/wp-cron.php?doing_wp_cron > /dev/null 2>&1

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

*/10 * * * * cd /home/user/public_html; php wp-cron.php > /dev/null 2>&1

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

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

cPanel 開啟 Cron Jobs 教學

https://www.inmotionhosting.com/support/website/wordpress/disabling-the-wp-cronphp-in-wordpress

結語

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

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

參考文件:

Why WP-Cron sucks

https://www.lucasrolff.com/wordpress/why-wp-cron-sucks/

Rocket-Nginx

https://github.com/maximejobin/rocket-nginx

hosted by kinsta

Comments

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Hey, 想嘗試 Kinsta 主機嗎?

18748

Kinsta 高效能主機

wPowered Starter 方案

馬上訂購

18749
Your Mastodon Instance