問題描述
我發現我的 WordPress 資料庫中已停用和刪除的外掛有 29,000 個 cron 作業。我已經嘗試了一些最佳化器外掛,但是大量的 cron 作業意味著我無法使用外掛刪除它們。
我也在我的 functions.php 中嘗試過沒有成功:
add_action("init", "clear_crons_left");
function clear_crons_left() {
wp_clear_scheduled_hook("cron_name");
}
有沒有可以使用 phpmyadmin 中的 SQL 命令來搜尋 cron hook 並刪除它們?
最佳解決方案
感謝 Privateer 提供及時的回覆和建議。
在我看到你的答案之前,我找到了一個方法。這是一個 step-by-step 方法,用於刪除數千箇舊的 cron 作業,可能對其他人有用。
我登入到 phpMyAdmin 。我點選了我的資料庫,然後點選了’search’ 選項卡。我鍵入’cron’,然後選擇’all tables’,然後單擊’Go’ 。我向下滾動搜尋結果列表到我的 wp_options 表。我點了’Browse’ 。列表頂部是 option_name ‘cron’ 。我點了’Edit’,然後等待頁面載入。我點選顯示 cron 作業列表的框。 cron 列表太長了,我的遊標需要大約 80 秒的時間來響應。然後在鍵盤上使用 Ctrl-A,然後點選刪除按鈕。我的瀏覽器完成刪除大約 2 分鐘 (chrome timed-out,所以我嘗試過 Firefox) 。
再過幾分鐘,cron 工作為我當前的活動外掛 re-populated 列表。有 9 個 cron 工作 (低於 29,000!) 。六年的重複 cron 工作來自嚴重編碼的外掛,其中一些我剛剛安裝了一天試用。還有數百個常見的外掛,如 Wordfence,BackupBuddy,Nextgen Gallery 和 AutoOptimizer – 所有這些都是我以前解除安裝的。我的網站現在載入就像是 turbo-charged 。管理區域要快得多管理員超時錯誤消失了。我花了很多時間最佳化我的網站,試圖減少載入時間。我甚至移動了主機並升級了我的託管計劃。沒有什麼會增加我的網站的速度,像刪除所有過時的 cron 工作。移動下載時間從 20 秒減少到 6 秒。桌面下載時間從 12 秒降至 4 秒。
在尋找解決方案時,我發現很少有關於 cron 作業對網站效能的影響的資訊。許多人說它沒有什麼區別,而對於少數的 cron 工作是真的。但是,在 WordPress 網站生活的歲月裡,我想知道有多少人因為刪除的外掛而成百上千的老 cron 工作。而不是要求使用者檢查他們的 PHP 記憶體限制,我建議開發人員首先要求使用者在解決問題的致命記憶體錯誤時,檢查 wp_options 中 cron 作業的數量。你可能會驚訝/震驚你發現什麼! 🙂
次佳解決方案
嘗試
SELECT * FROM `wp_options` WHERE option_name = 'cron'
如果你發現它可能會嘗試:
-
在 SQL 中:
UPDATE wp_options SET option_value = '' WHERE option_name = 'cron' -
在 wordpress 中:
update_option('cron', '');
您可能需要刪除 cron 選項或將該值設定為空的序列化陣列。
使用 update_option 將更安全,因為我不確定該值是否應為序列化的空陣列或空字串。您可以檢查 wp-includes /options.php 雖然… 但使用 update_option 將正確處理它,而不用擔心資料庫。
第三種解決方案
一個更簡單的解決方案是在一些外掛中呼叫 delete_option( 'cron' ); 一次。所有自動新增的 cron 作業將在您的站點的下次訪問/請求中再次新增。
作為一個例子 (mu) 外掛,只有當你啟用它執行:
<?php
/** Plugin Name: Clean Cron */
register_activation_hook( __FILE__, function()
{
delete_option( 'cron' );
} );
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。