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

WordPress uses wp-cron.php to automate things like scheduled posts, the default behavior can be intensive and we can disable it.

結語

如果你是一個高流量的網站,也建議將 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

Follow me

yungke

視咖啡如命的癮君子,沒有厲害的技術,只會小打小鬧的電腦工程師,其實是個打雜小弟,修電燈、水管也都是我的工作。
yungke
Follow me
Advertisement

Follow Me

查看本文
喜愛 Like 點擊數!!
Back to top