कैटलॉग नियम दैनिक अद्यतन काम नहीं करता है


15

मैं इस समस्या का सामना करता हूं कि मैगेंटो की कैटलॉग नियम दैनिक अद्यतन काम नहीं करता है। इसका मतलब है कि कैटलॉग नियम की समाप्ति की तारीख आने पर कोई उत्पाद मूल्य परिवर्तन नहीं होते हैं, इसलिए मुझे व्यवस्थापन में नियम लागू करें बटन को दबाना होगा। क्रोन कॉन्फ़िगर और काम कर रहा है। ऐसा लगता है कि कैटलॉग / ऑब्जर्वर :: dailyCatalogUpdate विधि को हर दिन स्वचालित रूप से नियमों को जांचना और लागू करना चाहिए, लेकिन यह (मैंने इसे मैन्युअल रूप से लॉन्च करने की कोशिश नहीं की है)। यहाँ Magento कोर कोड है:

<!--file: app/code/core/Mage/CatalogRule/etc/config.xml-->
<crontab>
    <jobs>
        <catalogrule_apply_all>
            <schedule>
                <cron_expr>*/1 * * * *</cron_expr>
            </schedule>
            <run>
                <model>catalogrule/observer::dailyCatalogUpdate</model>
            </run>
        </catalogrule_apply_all>
    </jobs>
    ...
</crontab>

देखने वाला:

/*file app/code/core/Mage/CatalogRule/Model/Observer.php*/
public function dailyCatalogUpdate($observer)
{
    Mage::getResourceSingleton('catalogrule/rule')->applyAllRulesForDateRange();

    return $this;
}

मेरे पास नीचे की तरह एक सफल पर्यवेक्षक विधि थी:

/*file app/code/core/Mage/CatalogRule/Model/Observer.php*/
public function dailyCatalogUpdate($observer)
{
    Mage::getModel('catalogrule/rule')->getResourceCollection()
                  ->walk(array(
                         Mage::getResourceSingleton('catalogrule/rule'),
                         'updateRuleProductData'
                  ));
    Mage::getResourceSingleton('catalogrule/rule')->applyAllRulesForDateRange();

    return $this;
}

इस तरह से हर दिन नियमों की जाँच की जाती है और नियम समाप्त होने पर उत्पादों की कीमतों में बदलाव किया जाता है। मुझे विश्वास नहीं होता कि यह Magento का एक बग है। कृपया, सलाह दें कि क्या समस्या है कि नियमों की जाँच नहीं की जाती है और स्वचालित रूप से लागू की जाती है?


क्या आपके PHP त्रुटि लॉग या cron_schedule टेबल पर संदेश कॉलम में कोई त्रुटि हो रही है? मुझे लगता है कि क्रोन वास्तव में कहा जा रहा है क्योंकि आपने संकेत दिया था कि आपको पर्यवेक्षक विधि को संशोधित करके कुछ सफलता मिली है।
डेवडाइगर

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

जवाबों:


7

हाल ही में मुझे भी यही समस्या हुई जब मैं अपनी परियोजना के लिए एक नए मूल्य नियम का परीक्षण कर रहा था। और मेरे सिरदर्द का कारण यह था कि मैंने यह नोटिस नहीं किया कि हर बार जब आप एक नया नियम बनाते हैं या मौजूदा नियमों में से कुछ को संपादित करते हैं - तो आपको अपने नियम परिवर्तनों के बारे में Magento को बताने के लिए " नियम लागू करें " बटन को दबाया जाना चाहिए ।


2
आपका बहुत बहुत धन्यवाद। आप सही हैं: परिवर्तनों के लिए बचत नियम पर्याप्त नहीं है। नियम ग्रिड में अतिरिक्त कॉलम रखना बहुत अच्छा होगा, यदि नियम लागू किया गया था या नहीं।
वोवस्की

यदि आप उस बटन को दबाते नहीं हैं, तो DailyCatalogUpdate को रातों-रात नियम लागू करने के लिए मान लिया जाता है। अन्यथा उस क्रोन का उद्देश्य क्या है?
हंस

7

"नियम लागू करें" को हिट करना सुनिश्चित करना हमेशा पर्याप्त नहीं होता है। मुझे हाल ही में पता चला है कि यदि भविष्य में किसी बिंदु पर क्रोन को ठीक से स्थापित नहीं किया गया है, तो नियम लागू नहीं होंगे।

जब नियम ने काम करना बंद कर दिया तो मैं वास्तव में नाखून नहीं काट पा रहा था। मेरे मामले में मेरे पास कुछ नियम थे जो ग्राहक समूह (थोक) के आधार पर लागू होते हैं।

  1. cron_scheduleतालिका की जाँच करें । सुनिश्चित करें कि आपके पास इसके अनुरूप कुछ प्रविष्टियाँ हैं catalogrule_apply_all(मुझे लगता है कि यह प्रक्रिया का नाम है)।
  2. config.xmlहर मिनट या परीक्षण के लिए कैटलॉग नियम मॉड्यूल की फ़ाइल को * / 1 के साथ सेट करें।
  3. cron_scheduleटेबल पर वापस देखें , और इसे हर दो मिनट में पुनः लोड करते रहें। आप नई प्रक्रियाओं जोड़ दिए जाते हैं / स्वचालित रूप से निष्पादित देखना चाहिए बिना कभी होने मैन्युअल रूप से अपनी दुकान के हिट करने के लिए cron.phpफ़ाइल।
  4. यदि आप किसी भी प्रक्रिया को मैन्युअल रूप से अपडेट नहीं कर रहे हैं, तो साइट की साइट के मालिक के रूप में एसएसएच साइट पर जाएं। एक कमांड लाइन से: crontab -e(आप विम में हो सकते हैं और यह नहीं जानते कि क्या करना है, मैं बुनियादी विम कमांड का उपयोग करने पर Google का सुझाव देता हूं)।
  5. चलाने के लिए क्रेस्टब सेट करें: */1 * * * * /path/to/your/cron.sh
  6. अब cron_scheduleयह सुनिश्चित करने के लिए तालिका को फिर से जांचें कि क्रोन प्रक्रियाएं स्वचालित रूप से निष्पादित हो रही हैं।
  7. उम्मीद है, इस बिंदु पर सब अच्छा है। आगे बढ़ो और वापस जाओ और वांछित अंतराल पर चलाने के लिए अपनी क्रोन प्रक्रियाओं को सेट करें।

3

जॉब शेड्यूल हो जाए तो चेक करें

आप ऐसा कर सकते हैं या तो डेटाबेस की जाँच करें या इस एक्सटेंशन को स्थापित करें: Aoe_Scheduler

यदि नौकरी काम करती है तो परीक्षण करें

एक php स्क्रिप्ट बनाएँ run_my_rules.phpऔर वहाँ केवल समारोह के लिए सामग्री में डाल दिया: dailyCatalogUpdateफिर कंसोल से चलाएं। देखिए क्या हो रहा है।

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