स्वचालित Cron कार्यों का अवलोकन
Cron को कॉन्फ़िगर करना Drupal वेबसाइट की स्थापना का एक महत्वपूर्ण चरण है — यह आपकी साइट के संसाधनों को बनाए रखने, खोज परिणामों को अपडेट रखने, कोर और मॉड्यूल अपडेट की जांच करने और अस्थायी फ़ाइलों को साफ़ करने में मदद करता है।
सही ढंग से कॉन्फ़िगर किया गया Cron कार्य कई महत्वपूर्ण कार्यों को संभालता है:
- सर्च मॉड्यूल द्वारा उपयोग की जाने वाली साइट सामग्री की अनुक्रमणिका (index) को अपडेट करता है।
- Aggregator मॉड्यूल द्वारा अद्यतन की जाने वाली फीड कतारों को प्रोसेस करता है।
- अपडेट मैनेजर मॉड्यूल के लिए उपलब्ध अपडेट की जांच करता है।
- System मॉड्यूल के लिए सामान्य रखरखाव कार्य करता है, जैसे पुराने लॉग एंट्रीज़ को हटाना।
Cron क्या है?
Cron एक बैकग्राउंड डेमॉन है जो निर्दिष्ट अंतराल पर कमांड्स चलाता है। इन कमांड्स को “Cron Jobs” कहा जाता है। Cron Unix, Linux और Mac सर्वरों पर उपलब्ध है। Windows सर्वर समान कार्य करने के लिए Scheduled Tasks का उपयोग करते हैं।
एक Cron जॉब मूल रूप से एक समयबद्ध क्रिया है जो आम तौर पर (और अधिक कुशलता से) आपकी वेबसाइट के होस्ट सर्वर द्वारा चलाई जाती है, लेकिन इसे किसी रिमोट सर्वर या आपके अपने डेस्कटॉप से भी ट्रिगर किया जा सकता है।
व्यवहार में, Cron जॉब आपकी वेबसाइट के cron.php
फ़ाइल को एक URL के माध्यम से विजिट करता है, जैसे:
http://www.example.com/cron.php?cron_key=0MgWtfB33FYbbQ5UAC3L0LL3RC0PT3RNUBZILLA0Nf1Re
इस फ़ाइल का सटीक URL आप "Status Report" में पा सकते हैं:
Administration → Reports → Status report (admin/reports/status) → Cron maintenance tasks सेक्शन में।
Cron सक्षम करना
सबसे सरल तरीका है Drupal को आपके लिए Cron चलाने देना (यह डिफ़ॉल्ट रूप से सक्षम होता है) — यानी “स्वचालित Cron प्रणाली” का उपयोग करना। आप इसे इस पथ से कॉन्फ़िगर कर सकते हैं: प्रबंधन → कॉन्फ़िगरेशन → सिस्टम → Cron (admin/config/system/cron)।
डिफ़ॉल्ट आवृत्ति हर तीन घंटे में एक बार होती है। इस प्रकार, Cron साइट पर किसी उपयोगकर्ता के अनुरोध के दौरान चलाया जाएगा, लेकिन हर तीन घंटे में केवल एक बार। कम ट्रैफ़िक वाली साइटों के लिए मैन्युअल Cron जॉब सेट करना बेहतर होता है। यदि आप स्वचालित Cron अक्षम करना चाहते हैं, तो “Run cron every” ड्रॉपडाउन को “Never” पर सेट करें।
स्वचालित Cron प्रणाली सभी सिस्टम्स के साथ संगत है क्योंकि यह वास्तव में सिस्टम-स्तरीय cron डेमॉन का उपयोग नहीं करती। यह हर अनुरोध के अंत में जांचती है कि आखिरी बार Cron कब चला था — और यदि बहुत समय बीत चुका है, तो उसी अनुरोध के हिस्से के रूप में Cron कार्य चलाती है।
इसके दो नुकसान हैं: (1) Cron कार्य केवल तब चलते हैं जब Drupal को कोई अनुरोध प्राप्त होता है। (2) Cron कार्यों का “लोड” उस उपयोगकर्ता अनुरोध पर जुड़ जाता है, जिससे कुछ अनुरोध धीमे हो सकते हैं या जटिल साइटों पर मेमोरी सीमा पार हो सकती है।
बाहरी Cron सेट करना
दूसरा तरीका (जो Drupal के किसी भी संस्करण पर लागू होता है) है — मैन्युअल Cron जॉब बनाना या किसी बाहरी सेवा का उपयोग करना, जैसे EasyCron या Cronless।
यह तरीका अधिक विश्वसनीय है (क्योंकि यह हमेशा निर्धारित समय पर चलता है) और कम संसाधन उपयोग करता है (क्योंकि Cron प्रोसेसिंग पेज अनुरोधों में नहीं जुड़ती)। इसलिए, जब आपके पास विकल्प हो, तो बाहरी Cron सेटअप को प्राथमिकता दी जानी चाहिए।
ध्यान दें कि यदि आप एक बाहरी Cron जॉब बनाते हैं, तो आप Drupal की स्वचालित Cron प्रणाली को पूरी तरह निष्क्रिय कर सकते हैं।
“स्वचालित Cron” अक्षम करना
प्रदर्शन कारणों से, या यदि आप चाहते हैं कि Cron केवल बाहरी ट्रिगर से चले, तो स्वचालित Cron प्रणाली को अक्षम करना उपयोगी हो सकता है।
आप इसे इस प्रकार अक्षम कर सकते हैं — “Run cron every” विकल्प को “Never” पर सेट करें (Administration → Configuration → System → Cron, यानी admin/config/system/cron)।
Drupal 8 में Cron को अक्षम करने का दूसरा तरीका है अपने settings.php
फ़ाइल में यह पंक्ति जोड़ना:
$config['automated_cron.settings']['interval'] = 0;
ध्यान दें कि यह admin/config/system/cron सेटिंग को “Never” पर स्थायी रूप से सेट कर देता है, और प्रशासक (administrator) उपयोगकर्ता इसे ओवरराइड नहीं कर सकते।