禁用 WordPress 的 wp-cron 計畫

Disable WP Cron

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

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

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

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

Advertisement

禁用 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 教學

Learn how to disable the WordPress chron. This will help performance for WordPress installations that have heavy traffic.

結語

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

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

參考文件:

Why WP-Cron sucks

This blogpost is about why WP-Cron sucks and how to make it suck less. And might speed up your site as well.

Rocket-Nginx

Rocket-Nginx is a Nginx configuration that makes WP-Rocket even faster by serving static pages directly without loading WordPress or PHP. - SatelliteWP/rocket-n...

Featured Photo 攝影師:Jeffrey Czum,連結:Pexels

yungke
Follow me
Advertisement
查看本文
喜愛 Like 點擊數!!
Back to top