सारांश
यदि आप देख रहे हैं तो त्रुटि संदेश तब होगा जब निम्न दो शर्तें पूरी होंगी:
- आप क्रॉन जॉब्स खत्म (त्रुटि) नहीं करते हैं या समाप्त होने में 4 मिनट से अधिक समय लेते हैं;
- आप प्रत्येक 4 मिनट की तुलना में अधिक बार क्रोन का आह्वान करते हैं (अपने क्रॉटाब की सेटिंग के अनुसार, ड्रुपल में सेटिंग नहीं)
यह त्रुटि संदेश इसलिए क्रोन कार्यों का एक लक्षण है जो या तो विफल हो रहा है या चलाने में बहुत लंबा समय ले रहा है। (नोट: मुझे लगता है कि आप पहले से ही अपराधी को ढूंढ चुके हैं, लेकिन मैं उन लोगों के लिए एक उत्तर जोड़ना चाहता था, जो इस पृष्ठ को खोजों के माध्यम से खोजते हैं, जैसा कि मैंने किया था)
पृष्ठभूमि
समझने की पहली बात यह है कि ड्रुपल क्रोन कार्यों को कैसे चलाया जाता है। ड्रुपल क्रोन को नियमित अंतराल पर लागू किया जाता है - या तो आपके सर्वर पर क्रोन जॉब के माध्यम से, या हर पेज लोड होने के बाद यदि आप गरीब आदमी के क्रोन का उपयोग करते हैं जो कि ड्रुपल डिफ़ॉल्ट है।
क्रोन कार्यों को चलाने के लिए जरूरी नहीं है कि हर बार क्रोन का आह्वान किया जाए - हालांकि ड्रुपल में एक सेटिंग है (डिफ़ॉल्ट 3 घंटे है) जो कहता है कि क्रोन कार्यों को कितनी बार चलाया जाना चाहिए। लेकिन यह 3 घंटे की देरी केवल तभी लागू होती है जब क्रोन कार्य सफलतापूर्वक समाप्त हो गए हों।
ड्रुपल 7 में, क्रोन ड्रुपल के लॉकिंग तंत्र का उपयोग करता है , जो एक सहकारी, सलाहकार लॉक सिस्टम प्रदान करता है। इस लॉक सिस्टम की एक विशेषता यह है कि ताले एक निश्चित समय के बाद समाप्त हो जाते हैं। क्रोन के मामले में, यह 4 मिनट के बाद समाप्त हो जाता है - इसलिए यदि आपका क्रोन हर 3 मिनट में लागू होता है और पिछली क्रॉन नौकरी उस समय तक समाप्त नहीं हुई थी (या तो दुर्घटनाग्रस्त हो गई थी या बहुत धीमी थी), तो आपको वास्तव में यह त्रुटि संदेश मिलेगा ।
तथ्य यह है कि आप क्रोन को हर 12 घंटे में सेट करते हैं, इससे कोई फर्क नहीं पड़ता है - क्योंकि ड्रूपल क्रोन कार्य विफल हो रहा है / बहुत लंबा समय ले रहा है, ड्रुपल यह मानता है कि इसे नहीं चलाया गया है इसलिए क्रोन के आह्वान होते ही इसे फिर से चलाने की कोशिश की जाती है। बारह घंटे की देरी केवल सफल क्रोन रन पर लागू होती है।
ड्रुपल 7 में क्रोन सेमीफोर चर का कोई अस्तित्व नहीं है - यह ड्रुपल के पुराने संस्करण के लिए था। Drupal 7 में मैन्युअल रूप से लॉक जारी करने का कोई विश्वसनीय तरीका नहीं है, क्योंकि लॉकिंग बैकेंड बदल सकता है - हालाँकि यदि आप कोर लॉकिंग तंत्र का उपयोग कर रहे हैं तो आप डेटाबेस को संपादित करके क्रोन लॉक जारी कर सकते हैं:
DELETE FROM semaphore WHERE name = 'cron';
लेकिन ऐसा करने से आप केवल लक्षणों को ठीक कर रहे होंगे - जिस समस्या के समाधान की आवश्यकता है, वह है क्रोन फेल होना / इतना लंबा चलना।