Какая конкретная работа сбрасывает правила управления каталогом каждый день?
Мы отключили catalogrule_apply_all
cronjob Magento из-за системы с несколькими средами (для упрощения: допустим, у нас есть 1 промежуточный сервер и 1 производственный сервер) в одном из наших клиентов. Catalogrule
процесс обновления выполняется только в одной среде (промежуточной), а затем мы передаем данные базы данных через системный процесс из этой среды в другие (производственные)
Проблема в том, что у нас есть несколько дней, когда мы не передаем данные между средами, а затем обновление catalogrule
не выполняется выполнено, но Magento выполняет сброс в производственной среде.
Кто-нибудь здесь знает, какая конкретная задача Magento cron сбрасывается ежедневно? Или, может быть, это не делается никаким cronjob, поэтому проблема в том, что обновление catalogrule
просто необходимо выполнять каждый день, даже если в активных правилах catalogrule
нет никаких изменений?
ОБНОВЛЕНИЕ Я подозреваю, что это и есть причина, кто-нибудь может это подтвердить?
<crontab>
<jobs>
<catalog_product_index_price_reindex_all>
<schedule>
<cron_expr>0 2 * * *</cron_expr>
</schedule>
<run>
<model>catalog/observer::reindexProductPrices</model>
</run>
</catalog_product_index_price_reindex_all>
</jobs>
</crontab>
3 answers
Нет задания cron, которое "сбрасывает" правила каталога, но цена, сгенерированная "catalogrule/observer::dailycatalogupdate" только на следующий день.
Итак, если вы отключили эту задачу cron - и она пропустит день - цены не будут продлены.
Вы можете проверить таблицу БД "catalogrule_product_price" - там есть поле "rule_date", в котором указано, на какую дату у вас сгенерированы правила.
Из app/code/core/Mage/CatalogRule/etc/config.xml
:
<crontab>
<jobs>
<catalogrule_apply_all>
<schedule>
<cron_expr>0 1 * * *</cron_expr>
</schedule>
<run>
<model>catalogrule/observer::dailyCatalogUpdate</model>
</run>
</catalogrule_apply_all>
</jobs>
\mage_catalogrule_model_observer::Ежедневное обновление каталога:
/**
* Daily update catalog price rule by cron
* Update include interval 3 days - current day - 1 days before + 1 days after
* This method is called from cron process, cron is working in UTC time and
* we should generate data for interval -1 day ... +1 day
*
* @param Varien_Event_Observer $observer
*
* @return Mage_CatalogRule_Model_Observer
*/
public function dailyCatalogUpdate($observer)
{
/** @var $resource Mage_CatalogRule_Model_Resource_Rule */
$resource = Mage::getResourceSingleton('catalogrule/rule');
$resource->applyAllRules();
return $this;
}
Чтобы исправить эту "фантастическую функцию" (ошибку чтения), вы должны реализовать задание cron Magento по умолчанию.
Единственное, что вам нужно сделать, это добавить следующее в ваш файл crontab: */5 * * * * / абсолютный/путь/к/bin/php -f/absolute/path/to/magento/cron.php Так что в моем случае это было: */5 * * * * / usr/локальный/bin/php -f/var/www/websitefolder/htdocs/cron.php Чтобы получить это в мой файл crontab через SSH:
1) Войдите на сервер с именем пользователя login 2) станьте корневым "судо-я" 3) редактировать кронтаб: "кронтаб -е" 4) добавьте строку 5) сохраните и закройте файл
Я ссылался на ссылку @ http://www.seankreps.com/magento-tips-faq/magento-catalog-price-rules-disappear-after-a-day/