Katalog kuralları günlük güncellemesi çalışmıyor


15

Magento'nun Katalog kuralları günlük güncellemesinin çalışmadığı konusunda sorun yaşıyorum. Bu, katalog kuralının sona erme tarihi geldiğinde ürün fiyatında değişiklik olmadığı anlamına gelir, bu nedenle Yönetici'de kural uygula düğmesine basmam gerekir. Cron yapılandırılmış ve çalışıyor. Görünen o ki catalogrule / observer :: dailyCatalogUpdate yöntemi kuralları her gün otomatik olarak kontrol etmeli ve uygulamalıdır, ancak bunu yapmaz (ayrıca manuel olarak başlatmayı denedim). İşte Magento çekirdek kodu:

<!--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>

Gözlemci:

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

    return $this;
}

Gözlemci yöntemini aşağıdaki gibi değiştirerek başarılı oldum:

/*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;
}

Bu şekilde kurallar her gün kontrol edilir ve uygulanır ve kuralın süresi dolarsa ürün fiyatları değiştirilir. Bunun Magento'nun bir hatası olduğuna inanmıyorum. Lütfen kuralların otomatik olarak kontrol edilmemesinin ve uygulanmamasının sorununu bildiriniz.


PHP hata günlüğünüze veya cron_schedule tablosundaki mesajlar sütununa kaydedilen hatalar var mı? Gözlemci yöntemini değiştirerek bazı başarılar elde ettiğinizi belirttiğiniz için cron'un aslında çağrıldığını varsayıyorum.
davidalger

Ayrıca orijinal gözlemciye bazı günlük çağrıları yerleştirebilir ve çağrı olup olmadığını görebilirsiniz. Sadece güvende olmak için.
Petar Dzhambazov

Yanıtlar:


7

Son zamanlarda, projemiz için yeni bir fiyat kuralını test ederken de aynı sorunu yaşadım. Ve baş ağrımın nedeni, yeni bir kural oluşturduğunuzda veya mevcut kurallardan bazılarını düzenlediğinizde - Magento'ya kural değişiklikleriniz hakkında bilgi vermek için " Kuralları Uygula " düğmesine basmanız gerektiğini fark etmememdi.


2
Çok teşekkür ederim. Haklısınız: değişiklikler için kaydetme kuralı yeterli değil. Kuralın uygulanıp uygulanmadığını söyleyerek kurallar tablosunda fazladan sütun olması harika olur.
vovsky

DailyCatalogUpdate öğesinin bu düğmeye basmazsanız gece kural uyguladığı varsayılır. Aksi takdirde o cronun amacı nedir?
Kaz

7

"Kuralları Uygula" ya basmak her zaman yeterli değildir. Kısa süre önce, cron düzgün kurulmazsa, gelecekte bir noktada kuralların uygulanmayacağını keşfettim.

Kurallar çalışmayı bıraktığında gerçekten çivilemedim. Benim durumumda, müşteri grubuna (toptan satış) dayanan bir avuç kuralım vardı.

  1. cron_scheduleTabloyu kontrol edin . Burada karşılık gelen bazı girişlerin olduğundan emin olun.catalogrule_apply_all (işlem adı olduğunu düşünüyorum).
  2. Cronjob'ı CatalogRule modülünde ayarlayın config.xml dosyasındaki * / 1 ile her dakika (test için) çalışacak şekilde .
  3. cron_scheduleMasaya tekrar bakın ve her birkaç dakikada bir yeniden doldurmaya devam edin. Yeni süreçler otomatik olarak çalıştırılır / eklense görmelisiniz olmadan hiç el mağazanın vurmak zorunda cron.phpdosyayı.
  4. İşlemlerin hiçbirinin manuel olarak güncellendiğini görmüyorsanız, sitenin dosyalarının sahibi olan kullanıcı olarak SSH siteye girer. Bir komut satırından: crontab -e(Vim'de olabilirsiniz ve ne yapacağınızı bilmiyorsunuz, temel Vim komutlarını kullanma konusunda google'ı öneriyorum).
  5. Crontab'ı çalışacak şekilde ayarlayın: */1 * * * * /path/to/your/cron.sh
  6. Şimdi cron_schedulecron işlemlerinin otomatik olarak yürütüldüğünden emin olmak için tabloyu tekrar kontrol edin .
  7. Umarım, bu noktada her şey iyidir. Devam edin ve geri dönün ve cron süreçlerinizi istediğiniz aralıklarla çalışacak şekilde ayarlayın.

3

İşin zamanlanıp ayarlanmadığını kontrol edin

Bunu veritabanını kontrol ederek veya şu uzantıyı yükleyerek yapabilirsiniz : Aoe_Scheduler

İşin çalışıp çalışmadığını test edin

Bir php betiği oluşturun run_my_rules.phpve yalnızca işlevin içeriğini buraya koyun: dailyCatalogUpdatedaha sonra bunu konsoldan çalıştırın. Neler olduğunu görün.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.