문제

고객 중 한 명이 다중 환경 시스템(단순화를 위해 1개의 스테이징 서버와 1개의 프로덕션 서버가 있다고 가정) 때문에 catalogrule_apply_all Magento cronjob을 비활성화했습니다.Catalogrule 새로 고침 프로세스는 하나의 환경(스테이징)에서만 수행된 다음 해당 환경에서 다른 환경(프로덕션)으로 시스템 프로세스를 통해 데이터베이스 데이터를 전달합니다.

문제는 우리가 환경간에 데이터를 전달하지 않는 날이 있고 catalogrule 새로 고침이 실행되지 않지만 Magento가 프로덕션 환경에서 재설정을 수행한다는 것입니다.

여기 누군가가 매일 재설정하는 구체적인 Magento 크론 작업이 무엇인지 알고 있습니까?아니면 이것은 어떤 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>
도움이 되었습니까?

해결책

카탈로그 규칙을 "재설정"하는 cron 작업은 없지만 "catalogrule/observer::dailyCatalogUpdate"에 의해 생성된 가격은 다음 날에만 적용됩니다.

따라서 이 cron 작업을 비활성화하고 하루를 놓치면 가격이 갱신되지 않습니다.

DB 테이블 "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::dailyCatalogUpdate:

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

이 "환상적인 기능"(버그 읽기)을 수정하려면 Magento의 기본 크론 작업을 구현해야 합니다.

crontab 파일에 다음을 추가하기만 하면 됩니다. */5 * * * * /absolute/path/to/bin/php -f /absolute/path/to/magento/cron.php 제 경우에는 다음과 같았습니다. */5 * * * * /usr/local/bin/php -f /var/www/websitefolder/htdocs/cron.php 이를 통해 crontab 파일로 가져오려면SSH:

1) 사용자 이름 로그인으로 서버에 로그인합니다. 2) 루트가 'sudo -i'가 됩니다. 3) crontab을 편집합니다: 'crontab -e' 4) 줄을 추가합니다. 5) 파일을 저장하고 닫습니다.

링크 @ http://www.seankreps.com/magento-tips-faq/magento-catalog-price-rules-disappear-after-a-day/을 참조했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top