2013-03-08 57 views

回答

4

多站點上的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/

http://wordpress.org/extend/plugins/wp-cron-control/

http://wordpress.org/extend/plugins/cron-view/

+0

暫時我將使用選項3設置一個站點短暫的,而不是一個網站的選擇。我會太雖然探索第一選項。非常感謝! – 2013-03-08 18:19:04