我使用WP Cron從一個插件安排一個全網絡的cron。在Wordpress Multisite上進行網絡寬Cron調度
無論激活哪個博客,我都想每小時運行一次cron。最重要的是,我需要防止cron從網絡上的不同站點多次運行。
有沒有一種方法可以使用WordPress調度系統進行設置?
我使用WP Cron從一個插件安排一個全網絡的cron。在Wordpress Multisite上進行網絡寬Cron調度
無論激活哪個博客,我都想每小時運行一次cron。最重要的是,我需要防止cron從網絡上的不同站點多次運行。
有沒有一種方法可以使用WordPress調度系統進行設置?
多站點上的wp-cron依賴於(子)域,因此每個實例都是獨立的。因此,來自a.site.com的呼叫是與來自b.site.com的呼叫完全分離的實例
這意味着,默認情況下,當您擁有插件時,無法阻止其在每個網絡中運行多次在多個實例上運行如果激活cron的代碼可以從該網絡中的任何站點運行。
還有,我能想到的一些方法來解決這個問題:
1)(這是未經測試,但我認爲它可能工作)有一個恆定的,你可以在一個名爲WP_CRON_LOCK_TIMEOUT WP-config定義你可以定義爲3600.這意味着,每個小時只能運行一次cron進程的全部。不知道這是否是您的選擇。
2)停止自己運行的wp-cron,然後設置一個服務器cron作業,每隔一小時在crontab中啓動wp-cron。你會這樣做 define('DISABLE_WP_CRON',true); 在WP-配置,然後在crontab只是做一個 捲曲http://site.com/wp-cron.php 以每3600秒跑完(或wget的,而不是捲曲)
3)您可以設置它獲取由WP更新整個網絡的站點選項-cron,當它第一次運行時。您需要在運行cron作業的腳本中進行檢查以獲取此選項,並查看存儲的時間是否小於3600秒前的時間。如果是,那麼不要讓cron運行。如果不是,則運行cron並使用當前時間更新站點範圍的選項。 (請參閱add_site_option()update_site_option()和get_site_option()基本上與它們的單站點對應部分相同,但在網絡範圍內)
4)有一個'premium'插件,它基本上派生出一個運行PHP的後臺進程獨立於訪問您的網站的任何人。默認情況下,它每60秒運行一次,但很容易改變它。 http://codecanyon.net/item/improved-cron/176543
wp-cron.php並沒有真正給你任何動作或過濾器,它確實設置了你可能試圖測試的瞬變,但我不認爲這是前進的方向。
有一些真正有用的(免費)插件的cron:
http://wordpress.org/extend/plugins/wp-crontrol/
暫時我將使用選項3設置一個站點短暫的,而不是一個網站的選擇。我會太雖然探索第一選項。非常感謝! – 2013-03-08 18:19:04