WordPress 會使用 WP-Cron 處理預約文章、備份、電郵通知、資料同步和外掛清理工作。它的名稱像伺服器 Cron,但運作方式不同:預設要有人開啟網站時才會觸發。低流量網站可能延遲,高流量網站則可能重複檢查,理解排程機制有助找出「偶爾才失效」的問題。
WP-Cron 如何被觸發
當網站收到請求時,WordPress 會檢查是否有到期事件,並嘗試在背景執行。訪客不需要等待整個工作完成,但若網站長時間沒有人瀏覽,預約工作便可能遲到。快取、維護模式、基本認證或防火牆設定亦可能阻擋背景請求。
常見的排程工作
核心會安排預約文章、更新檢查和暫存資料清理;備份、SEO、電商、會員與電子報外掛亦會加入自己的事件。查看排程時,先記錄事件名稱、下一次執行時間、重複頻率和來源外掛,才能判斷它是否正常,而不是看見大量事件便全部刪除。
如何發現 WP-Cron 出現問題
預約文章顯示「錯過排程」、備份沒有按時完成、電郵突然停止、訂單狀態沒有更新,都是常見訊號。先查看 WordPress 和主機錯誤紀錄,再檢查系統回送請求是否成功。不要只反覆按「立即執行」,因為這會掩蓋真正的連線或程式錯誤。
使用工具查看排程事件
可信的 Cron 管理外掛可以列出事件和執行時間,亦可手動測試單一事件。執行前先確認事件用途,特別是付款、會員到期或大量寄信工作。測試後查看是否重新建立下一次事件,以及錯誤紀錄有沒有超時、記憶體不足或權限問題。
避免重複和孤立事件
外掛在啟用時可能加入排程,停用或刪除時卻沒有移除,久而久之形成孤立事件。亦有程式在每次載入時重複建立相同工作。確認來源外掛不再使用後才刪除事件;若事件不停重新出現,應修正建立邏輯,而不是靠定期清理。
低流量網站的延遲處理
如果網站每天只有少量訪客,WP-Cron 沒有穩定觸發屬正常限制。可由主機控制台建立真正的系統排程,每隔五至十五分鐘呼叫 WordPress 排程入口。頻率要配合業務需要,普通內容網站不必每分鐘執行,避免浪費資源。
高流量網站避免每次請求檢查
高流量網站可關閉由訪客請求觸發的 WP-Cron,再由系統 Cron 固定呼叫。這樣能減少大量同時請求的排程檢查,也讓執行時間較可預測。切換前必須先建立並測試系統排程,否則一旦停用內置觸發,所有預約工作都會停止。
設定系統 Cron 的基本原則
主機可能提供網址呼叫、PHP 指令或 WP-CLI 三種方式。使用主機官方建議的方法,確認 PHP 版本和網站路徑正確,並把輸出寫入可管理的紀錄。不要把包含敏感權杖的排程網址公開;如需外部監察,使用限制權限的專用機制。
長時間工作應拆分批次
匯入大量產品、產生報表或寄送數千封郵件,若在單一排程完成,容易遇到執行時間和記憶體限制。把工作拆成可重試的小批次,保存進度並避免重複處理。即使其中一次失敗,下一次亦可由上次位置繼續。
監察失敗與執行時間
重要排程不能只依賴「已設定」便假設成功。記錄開始、完成、處理數量和錯誤原因,並在連續失敗時通知管理員。備份工作更要定期做還原測試,因為排程顯示完成,不代表備份內容一定可用。
修改時保留還原方法
調整 `wp-config.php` 或主機排程前先備份,並記錄原有設定。完成後測試預約文章、備份和電郵等重要功能,至少觀察一個完整執行週期。若出現問題,可先恢復 WordPress 預設觸發,再逐項檢查系統 Cron。
結語
WP-Cron 適合一般網站,但它依賴訪客請求,執行時間不一定準確。低流量或任務關鍵網站可改用系統 Cron,高流量網站則可減少重複檢查。配合事件清單、錯誤紀錄、批次處理和失敗通知,排程工作才會真正可靠。









