क्या मुझे WP_CRON को अक्षम करना चाहिए और इसके बजाय हर कुछ मिनट सर्वर से wp-cron.php को ट्रिगर करना चाहिए?


12

हर पेज लोड पर वर्डप्रेस अनावश्यक रूप से WP CRON की तरह दिखता है। मैं सोच रहा हूं, हर यात्रा पर जाने के बजाय, सर्वर के माध्यम से इसे हर 5 मिनट में चलाने के लिए शेड्यूल क्यों नहीं किया जाता है? मैं बस हर पांच मिनट में wp-cron.php ट्रिगर कर सकता हूं और वांछित परिणाम प्राप्त कर सकता हूं?

क्या इसका कोई नकारात्मक पहलू है?

जवाबों:


15

सर्वर की क्रॉन नौकरियों का उपयोग करके WP CRON को चलाने के लिए कोई नकारात्मक पहलू नहीं है। वास्तव में यह अनुशंसित अभ्यास है।

आधिकारिक वर्डप्रेस प्लगइन विकास दस्तावेज़ के अनुसार :

WP-Cron लगातार नहीं चलता है, जो कि महत्वपूर्ण कार्य हैं जो समय पर चलना चाहिए। इसके लिए एक आसान उपाय है। बस अपने सिस्टम के टास्क शेड्यूलर को अपने इच्छित अंतराल (या विशिष्ट समय पर) पर चलाने के लिए सेट करें।

ऐसा करने के लिए, आपको पहले डिफ़ॉल्ट क्रोन व्यवहार को अक्षम करना होगा wp-config.php:

define('DISABLE_WP_CRON', true);

फिर, wp-cron.phpअपने सर्वर से शेड्यूल करें। लिनक्स के लिए, इसका मतलब है कि:

crontab -e

हालाँकि, इसे कमांड लाइन (CLI) में चलाने के बजाय, इसे HTTP अनुरोध के रूप में चलाएं। इसके लिए आप इसका उपयोग कर सकते हैं wget:

*/5 * * * * wget -q -O - https://your-domain.com/wp-cron.php?doing_wp_cron

वर्डप्रेस सभी आवश्यक कोर फ़ाइलों, प्लगइन्स आदि wp-cron.phpको निम्न कोड के साथ लोड करता है :

if ( !defined('ABSPATH') ) {
    /** Set up WordPress environment */
    require_once( dirname( __FILE__ ) . '/wp-load.php' );
}

तो वर्डप्रेस के बारे में चिंता न करें महत्वपूर्ण सुविधाओं को लोड नहीं कर रहा है।


1
WordPress.org प्रलेखन तो wget http://YOUR_SITE_URL/wp-cron.phpबिना जोड़ के उल्लेख से जुड़ा ?doing_wp_cron है एक दूसरे से बेहतर है? ?doing_wp_cronगैर-संस्करण क्या नहीं करता है इसके अलावा क्या करता है ?
गैरकानूनी

संभवतः बस आपके लॉग क्वेरी स्ट्रिंग दिखाएंगे ताकि आप जान सकें कि इसे निश्चितता के साथ कैसे बुलाया गया था।
स्लैक्स

1
मैं इससे बिल्कुल सहमत नहीं हूं। सबसे पहले, यह सच नहीं है कि यह "अनुशंसित" है। दूसरे, यह विधि किसी भी प्लगइन्स को अपंग कर देगी जो शेड्यूलिंग ईवेंट की वास्तविक अनुशंसित पद्धति का उपयोग करती है। मुझे लगता है कि यह वास्तव में बुरी सलाह है। लगभग किसी को भी क्रोन को बंद नहीं करना चाहिए जब तक कि आपके पास ऐसा करने के लिए बहुत ही विशिष्ट कारण न हो। यदि आप वर्डप्रेस को सीडीएन या कुछ और के लिए तोड़ रहे हैं तो मैं केवल यही सोच सकता हूं। यह सामान्य अभ्यास नहीं है।
जॉन

1
@ जॉननी: यह विधि वास्तव में क्रोन को अक्षम नहीं करती है, यह WP क्रॉन विधि को निष्क्रिय कर देती है जो प्रत्येक पृष्ठ लोड पर क्रोन नौकरियों को चलाने के लिए जाँच और प्रयास करती है। define('DISABLE_WP_CRON', true);केवल क्रोन प्रक्रिया के उस हिस्से को अक्षम करता है और फिर क्रोन स्क्रिप्ट को कोड के साथ कॉल करता है जैसे: */5 * * * * wget -q -O - https://your-domain.com/wp-cron.php?doing_wp_cronसर्वर पर यह सुनिश्चित करता है कि क्रोन नौकरियों को निष्पादित किया जाता है। किसी भी समयबद्धन प्लगइन को भी अंतर नहीं पता होगा।
फैयाज

1
इस विषय के बारे में WordPress.org प्रलेखन लिंक डेवलपर.
wordpress.org/plugins/cron/… में

2

वहाँ कुछ downsides के होते हैं: सबसे पहले, wp-cron.php का उपयोग करते समय एक cli चीजों जैसे $ _SERVER चर सेट नहीं किए जाते हैं। लोग इसके बजाय wp-cron.php के लिए एक कर्ल अनुरोध का उपयोग करके इस सीमा को पार करते हैं।

दूसरे, क्योंकि WP ही wp-cron.php के साथ लोड नहीं है; यदि आप SMTP मेलर प्लगइन का उपयोग करते हैं तो wp-cron को कॉल करते समय इसे लोड नहीं किया जाएगा। फिर से, कर्ल कॉल का उपयोग इस समस्या को ओवरराइड करता है। कर्ल सबसे अधिक इस्तेमाल की जाने वाली विधि लगती है।

तथापि; मैं पोस्टफ़िक्स में मेल सेटिंग्स सेट करने के बाद wp-cli का उपयोग करना पसंद करता हूं और (nginx के लिए) php-fpm कॉन्फिगरेशन को सही तरीके से सेट करता हूं और जैसे crontab सेट करता हूं

*/5    *   *   *   *  wp cron event list --skip-plugins --skip-themes --path="/var/www/vhosts/example.com/httpdocs/wp" --fields=hook,next_run_relative --format=csv | awk -F, '$2=="now" {print $1}' | xargs -r wp --path="/var/www/vhosts/example.com/httpdocs/wp" cron event run $1

(सीएसवी प्रारूप में विशिष्ट क्षेत्रों के साथ सभी क्रोनों को सूचीबद्ध करें - हुक क्रोन का नाम है, अगला रन रिश्तेदार समय है। लोगों को 'अब' के रूप में दिखाते हुए पट्टी करें (जो अब कारण हैं) AWK का उपयोग करते हुए, उस सूची को xargs में पास करें। wp cron event run $HOOKप्रत्येक क्रॉन पर कॉल करें ।) wp-cli लोड वर्डप्रेस का सही तरीके से उपयोग करना (मैं कोड्स को सूचीबद्ध करते समय प्लगइन्स को छोड़ना चुनता हूं, क्योंकि कोड इरोज़ और php चेतावनियाँ स्क्रिप्ट किए गए आउटपुट को खराब कर देंगे; लेकिन xargs के रूप में क्रोन चलाते समय उन्हें छोड़ना नहीं चाहिए, जैसा कि; क्रोन को प्लग-इन लोड होने की आवश्यकता हो सकती है)

आशा है कि यह आपको कुछ संकेत देता है कि क्या देखना है।


2
कैसे स्थापित करने के बारे में: / 15 * * wget -q -O - yourdomain.com/wp-cron.php?doing_wp_cron जैसा कि TomMcFarlin द्वारा सुझाया गया है - tommcfarlin.com/wordpress-cron-jobs । काम को अच्छी तरह से करने लगता है। आपकी टिप्पणी की सराहना करेंगे।
TheBigK

हाँ, जैसा कि मैंने पूरे लोगों से उल्लेख किया है कि क्रोन को ट्रिगर करने के लिए कर्ल (wget या कोई अन्य http कॉल) का उपयोग करें, और उस पद्धति में कुछ भी गलत नहीं है। मैं सीधे wp-cron php फ़ाइल को कॉल करने की समस्याओं की सलाह दे रहा था, जिसमें आवश्यक फाइलें शामिल नहीं होंगी, और यदि आप इसे थोड़ा मसाला देना चाहते हैं तो एक अन्य वैकल्पिक विधि की सलाह दे रहे हैं।
टेक्निकलचो

0

Wp-cron को डिसेबल नहीं करने के कई कारण हैं। वास्तव में, ऐसा करने के लिए उपयोग मामला खोजना लगभग असंभव है। यह आपकी साइट को धीमा नहीं करता है, और इसका उपयोग उन चीजों के लिए किया जाता है जिनके बारे में आप नहीं जानते होंगे।

कई प्लगइन्स चीजों को शेड्यूल करने के लिए WP-Cron का उपयोग करते हैं। यदि आप शेड्यूलर को बंद कर देते हैं तो वे भ्रमित हो सकते हैं।

इस विषय पर ट्यूटोरियल का प्रसार है क्योंकि यह भ्रामक है, और क्योंकि यह आपकी साइट के लिए बहुत कुछ नहीं करता है जब आप इसे अक्षम करते हैं। यह क्या करेगा, उस देवता के लिए सिरदर्द है, जिसे छह महीने में पैदा हुई रहस्यमय समस्या को ठीक करना है।

इसके अलावा, WP हार्टबीट एडमिन एरिया में हर 15 सेकंड में फायर करता है, इस मुद्दे को 99% लोगों के लिए हल करता है जो सोचते हैं कि उनके पास यह है।


2
यह एक भयानक प्रतिक्रिया है - वे हैं- WP Cron को अक्षम करना। वे केवल पगेलोड पर WP क्रोन के आह्वान को अक्षम कर रहे हैं, और इसे सिस्टम क्रोन डेमॉन के बजाय इसे लोड कर रहे हैं। शीश।
बैरी चैपमैन

वैसे भी, इसे अकेले छोड़ने का मुख्य कारण यह है कि कई प्लगइन्स अब विस्तारित पृष्ठभूमि टास्क के लिए क्रोन का उपयोग कर रहे हैं। आप उस चीज़ को गड़बड़ कर सकते हैं जो NEXT व्यक्ति कर रहा है, क्योंकि वे उम्मीद करते हैं कि सिस्टम मानक तरीके से काम करेगा। सौभाग्य!
जॉन डी

अगर एक प्लगइन को एक तरह से कोडित किया जाता है जो पूरी तरह से टूट जाता है अगर wp cron अक्षम है, तो इसका मतलब है कि इसे अक्षम व्यक्ति द्वारा प्रोग्राम किया गया है, और इसे तुरंत अनइंस्टॉल करना बेहतर है।
मैग्नेटिक_डूड

खैर, यहाँ दो टिप्पणियाँ मेरी बात साबित करती हैं। आपके पास एक देवता है जो कहता है "यह क्रोन को निष्क्रिय नहीं करता है जो इसे मैयरली इसे ओएस क्रोन में बदल देता है" - जो कि वर्डप्रेस में एक ब्रेक है, जो ओएस तटस्थ है। फिर एक और देव कहते हैं "हे, यह wp cron के सर्वनाश के लिए योजना बनाने के लिए प्लगइन देव की जिम्मेदारी है।" उह, ठीक है। इसलिए यदि आप क्रोन कार्यक्षमता चाहते हैं, तो आपको क्रोन प्रणाली के उन्मूलन के लिए योजना बनाना चाहिए? किसका? बैकअप क्रोन प्रणाली? उस टिप्पणी का कोई मतलब नहीं है [जाहिर है]।
जॉन डी

वैसे भी, वर्तमान स्थिति "TOTAL CONFUSION" है। वह वर्तमान स्थिति है। एकमात्र समाधान, एक framwork POV से, लोगों को यह बताना है: यहाँ एक WP-CRON सिस्टम सिस्टम है। यह बंद नहीं है। अन्य विकल्प 10,000 अलग, विभिन्न राय है। जो अभी हमारे पास है।
जॉन डीई

0

मैं अभी तक wp-cron को बाहरी सेवा में लोड करने के लिए एक वास्तविक नकारात्मक पक्ष नहीं खोज पा रहा हूं। कई सालों से ऐसा कर रहे हैं।

विशेष रूप से आज की दुनिया में जहां आप एप्लिकेशन को माइक्रोसर्विसेस के रूप में चला सकते हैं।

मैं प्रत्येक वर्डप्रेस घटक के लिए अलग डॉकटर कंटेनरों का उपयोग करता हूं - php, web, db, crontab, redis और इतने पर)। Crontab को अलग कंटेनर के रूप में रखने के बाद, wp-cron को http के माध्यम से स्थानीय नेटवर्क का उपयोग करके कॉल किया जाता है, केवल तभी जब मुझे इसकी आवश्यकता हो।

यह बैकएंड नोड्स पर तनाव को कम करता है और छोटे हमले की सतह होने से सुरक्षा में सुधार करता है।

अगर डेवलपर यह पता नहीं लगा सकता है कि हर पेज लोड पर wp-cron पर कॉल किए बिना सामान कैसे किया जाता है, तो यह उसकी ओर से अनुभवहीनता की बात करता है। "इसे अकेले छोड़ देना", क्योंकि आप समझ नहीं पाते हैं कि कैसे काम करते हैं, इसे रखने का एक अच्छा कारण नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.