मुझे एक सेट समय पर एक बार चलाने के लिए क्रॉन नौकरी स्थापित करने में मुश्किल हो रही है। यहाँ मैं अपने मॉड्यूल के config में है:Magento का क्रॉन मूल रूप से त्रुटिपूर्ण है?
<crontab>
<jobs>
<sorting_flushcache>
<schedule><cron_expr>0 16 * * *</cron_expr></schedule>
<run><model>sorting/observer::flushProductCacheCron</model></run>
</sorting_flushcache>
</jobs>
</crontab>
से मैं क्या क्रॉन नौकरियों के बारे में पता है, कि अपने स्थानीय समय क्षेत्र पर आधारित शाम 5pm बजे चलाने चाहिए। हालांकि, यह कभी काम नहीं करता है। यदि मैं इसके बजाय cron_expr से * 16 * * *
पर सेट करता हूं तो यह पूरे घंटे (जैसा कि आप उम्मीद करेंगे) के लिए हर मिनट नौकरी निर्धारित करता है।
मैं कोड के माध्यम से पता लगाया और मुझे लगता है मैं समस्या पाया लगता है, लेकिन मैं क्रॉन निर्धारण के बारे में पर्याप्त जानकारी नहीं है और यह कैसे वास्तव में काम करने के लिए तो मैं आशा करती हूं कि किसी की मदद कर सकते हैं मुझे समझने क्या गलत है और कैसे अपेक्षा की जाती है अपना काम काम करने के लिए।
Mage_Cron_Model_Schedule जानवर का दिमाग है। जब cron.php स्क्रिप्ट को सर्वर के क्रोंटैब शेड्यूल द्वारा बुलाया जाता है तो यह एक ऐसा ईवेंट भेजता है जो इस वर्ग को पकड़ता है और उसका काम करता है। अन्य चीजों के अलावा यह कॉन्फ़िगरेशन और आगामी क्रॉन नौकरियों को निर्धारित करने के प्रयासों में खींचता है। public function trySchedule($time)
के अंदर यह matchCronExpression
पर कॉल करता है, जो इसे क्रॉन अभिव्यक्ति के उस टुकड़े से संबंधित वर्तमान समय के मूल्य के साथ प्रश्न में क्रॉन अभिव्यक्ति का टुकड़ा पास करता है। उदाहरण के लिए, यह वर्तमान टाइमस्टैम्प के मिनटों में cron_expr (मिनट भाग) के पहले भाग की तुलना करता है। matchCronExpression
समारोह के अंत में यह तो जैसे एक बूलियन मान देता है:
return ($num>=$from) && ($num<=$to) && ($num%$mod===0);
मेरे मामले में, मेरा cron_expr0 16 * * *
है। चूंकि मेरे पास मिनट भाग के लिए कोई श्रेणी या */5
टाइप सामग्री नहीं है, इसलिए यह वर्तमान टाइमस्टैम्प के सटीक मूल्य के विरुद्ध निर्धारित सटीक मान की तुलना कर रहा है। इसका मतलब यह है कि यह केवल तभी सही होगा जब क्रॉन स्क्रिप्ट को सटीक मिनट में चलाने के लिए यह हुआ कि यह नौकरी निर्धारित की जानी चाहिए।
फिर से, मैं एक क्रॉन विशेषज्ञ नहीं हूं लेकिन यह मेरे लिए सही नहीं लगता है। तो, क्या एक दिन में एक बार चलाने के लिए नौकरी निर्धारित करना है, यदि आप सही समय की भविष्यवाणी नहीं कर सकते कि क्रॉन शेड्यूलर स्क्रिप्ट चलाएगा? मुझे उम्मीद है कि मुझे कुछ याद आ रहा है ... क्या कोई मदद कर सकता है?
- क्रॉन कॉन्फ़िग जानकारी -
generate schedules every: 5
schedule ahead for: 10
missed if not run within: 20
success history lifetime: 60
failure history lifetime: 600
सर्वर टाइमज़ोन, आपका स्थानीय टाइमज़ोन नहीं। – hakre
जो भी हो, वह बात नहीं है। जैसा कि मैंने अपनी पोस्ट में उल्लेख किया है, अगर मैं इसे '* 16 * * *' में बदलता हूं तो यह काम करता है .... तो यह अर्थशास्त्र नहीं है कि मैंने किस समय कहा था कि मैंने इसे आधारित किया है। मैं बस काम नहीं करता। – BrianVPS
हाँ टूटा हुआ दिखता है। लेकिन मैंने जो पढ़ा, मैग्नेटो की कोड गुणवत्ता अच्छी नहीं है। शायद रिलीज को धक्का देने के लिए एक साथ झटकेदार कुछ और इसे जल्दी बेचा जाने के लिए सेक्सी लग रहा है। – hakre