2013-03-08 3 views
5

मैं प्लगइन से नेटवर्क चौड़ा क्रॉन शेड्यूल करने के लिए WP क्रोन का उपयोग कर रहा हूं।वर्डप्रेस मल्टीसाइट पर नेटवर्क वाइड क्रोन शेड्यूलिंग

मैं क्रॉन प्रति घंटा चलाना चाहता हूं इससे कोई फर्क नहीं पड़ता कि यह किस ब्लॉग से सक्रिय है। सबसे महत्वपूर्ण बात यह है कि मुझे क्रॉन को नेटवर्क पर विभिन्न साइटों से कई बार चलाने से रोकने की आवश्यकता है।

क्या वर्डप्रेस शेड्यूलिंग सिस्टम का उपयोग करके इसे सेट करने का कोई तरीका है?

उत्तर

4

मल्टीसाइट पर wp-cron डोमेन (उप) डोमेन निर्भर है, इसलिए प्रत्येक उदाहरण अलग है। तो a.site.com से एक कॉल b.site.com

से कॉल से एक पूरी तरह से अलग उदाहरण है, इसका मतलब है कि डिफ़ॉल्ट रूप से, प्लगइन होने पर प्रति नेटवर्क से अधिक बार इसे चलाने से रोकने का कोई तरीका नहीं है एक से अधिक उदाहरण पर चल रहा है यदि क्रॉन को सक्रिय करने वाला कोड उस नेटवर्क में किसी भी साइट से चलाया जा सकता है।

कुछ तरीके है कि मैं के बारे में सोच सकते हैं कि यह चारों ओर कदम उठाएं:

1) (यह untested है, लेकिन मैं यह काम कर सकते हैं लगता है) वहाँ एक निरंतर है कि आप WP-config WP_CRON_LOCK_TIMEOUT कहा जाता है में परिभाषित कर सकते हैं है जो आप 3600 के रूप में परिभाषित किया जा सकता है। इसका मतलब यह होगा कि सभी क्रॉन प्रक्रिया केवल हर घंटे एक बार चल सकती है। सुनिश्चित नहीं है कि यह आपके लिए क्या विकल्प है।

2) अपने आप से चल रहे डब्ल्यूपी-क्रॉन को रोकें और फिर क्रॉनबैब में हर घंटे डब्ल्यूपी-क्रॉन को आग लगाने के लिए सर्वर क्रॉन नौकरी सेट करें। आप परिभाषित करेंगे ('DISABLE_WP_CRON', सत्य); WP-config में और उसके बाद crontab में सिर्फ एक कर्ल http://site.com/wp-cron.php हर 3600 सेकंड चलाने के लिए (या कर्ल के बजाय wget)

3) आप एक नेटवर्क चौड़ा साइट विकल्प WP द्वारा अद्यतन हो जाता है जो निर्धारित कर सकते हैं कर -क्रॉन जब यह पहली बार घंटे पर चलता है। आपको स्क्रिप्ट में एक चेक में निर्माण करने की आवश्यकता होगी जो इस विकल्प को पाने के लिए क्रॉन नौकरी चलाता है और देखता है कि संग्रहीत समय 3600 सेकेंड पहले से कम है या नहीं। यदि ऐसा है, तो क्रॉन को चलाने की अनुमति न दें। यदि ऐसा नहीं है, तो क्रॉन चलाएं और वर्तमान समय के साथ साइट-व्यापी विकल्प अपडेट करें। (Add_site_option() update_site_option() और get_site_option (देखें) अनिवार्य रूप से अपने एकल साइट समकक्षों के रूप में ही कर रहे हैं, लेकिन नेटवर्क चौड़ा कर रहे हैं)

4) वहाँ एक 'प्रीमियम' प्लगइन जो मूल रूप से एक PHP पृष्ठभूमि प्रक्रिया spawns है कि चलाता है आपकी साइट पर आने वाले किसी भी व्यक्ति से स्वतंत्र रूप से। डिफ़ॉल्ट रूप से यह हर 60 सेकंड चलाता है, लेकिन इसे बदलना आसान होगा। http://codecanyon.net/item/improved-cron/176543

wp-cron.php वास्तव में आपको कोई भी क्रिया या फ़िल्टर नहीं देता है, यह ट्रांजिस्टर सेट करता है जिसे आप संभवतः परीक्षण करने की कोशिश में देख सकते हैं, लेकिन मुझे नहीं लगता कि यह आगे बढ़ने का तरीका है।

वहाँ क्रॉन के लिए कुछ वास्तव में उपयोगी (मुक्त) प्लगइन्स हैं:

http://wordpress.org/extend/plugins/wp-crontrol/

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

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

+0

का पालन समय के लिए .. मैं भी हालांकि 1 विकल्प का पता लगाने के लिए होगा। आपका बहुत बहुत धन्यवाद! –

4

इस प्रयास करें:

http://www.lucasrolff.com/wordpress/why-wp-cron-sucks/

यह आसान समाधान मेरे लिए काम किया।

बस मैं एक साइट एक साइट विकल्प के बजाय क्षणिक की स्थापना विकल्प 3 उपयोग करने के लिए जा रहा हूँ जा रहा है भाग 2.

संबंधित मुद्दे