Правила каталога ежедневное обновление не работает


Я сталкиваюсь с проблемой, что ежедневное обновление правил каталога Magento не работает. Это означает, что при истечении срока действия правила каталога цены на товары не изменяются, поэтому я должен нажать кнопку применить правило в администраторе. Cron настроен и работает. Кажется, что метод catalogrule/observer::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. Пожалуйста, сообщите, в чем проблема, что правила не проверяются и не применяются автоматически?

Author: Vicky, 2013-01-24

3 answers

Недавно у меня была такая же проблема, когда я тестировал новое правило ценообразования для нашего проекта. И причиной моей головной боли было то, что я не заметил, что каждый раз, когда вы создаете новое правило или редактируете некоторые из существующих правил, вы должны нажимать кнопку "Применить правила", чтобы Magento знал об изменениях в ваших правилах.

 7
Author: Max Uroda, 2017-11-21 12:54:43

Не всегда достаточно нажать кнопку "Применить правила". Недавно я обнаружил, что если cron не настроен должным образом, в какой-то момент в будущем правила не будут применяться.

Я не смог по-настоящему разобраться, когда правила перестали работать. В моем случае у меня было несколько правил, которые применяются в зависимости от группы клиентов (оптовая торговля).

  1. Проверьте таблицу cron_schedule. Убедитесь, что у вас есть несколько записей здесь, соответствующих catalogrule_apply_all (я думаю, что это процесс имя).
  2. Установите задание cron в файле модуля CatalogRule config.xml для запуска каждую минуту или около того (для тестирования) с помощью */1.
  3. Оглянитесь на таблицу cron_schedule и продолжайте перезагружать ее каждые пару минут. Вы должны увидеть, как новые процессы добавляются/выполняются автоматически без необходимости вручную заходить в ваш магазин cron.php файл.
  4. Если вы не видите, как какие-либо процессы обновляются вручную, войдите на сайт по SSH от имени пользователя, которому принадлежат файлы сайта. Из командная строка: crontab -e (возможно, вы находитесь в Vim и не знаете, что делать, я предлагаю Google использовать основные команды Vim).
  5. Установите кронтаб для запуска: */1 * * * * /path/to/your/cron.sh
  6. Теперь снова проверьте таблицу cron_schedule, чтобы убедиться, что процессы cron выполняются автоматически.
  7. Надеюсь, на данный момент все хорошо. Продолжайте, вернитесь назад и настройте свои процессы cron на выполнение с требуемыми интервалами.
 7
Author: pspahn, 2018-03-12 06:48:39

Проверьте, будет ли задание запланировано

Вы можете сделать это, либо проверив базу данных, либо установив это расширение: Aoe_Scheduler

Проверьте, работает ли задание

Создайте php-скрипт run_my_rules.php и поместите туда только содержимое для функции: dailyCatalogUpdate затем запустите его с консоли. Посмотрите, что происходит.

 3
Author: FlorinelChis, 2013-01-24 15:37:18