카탈로그 규칙 일일 업데이트가 작동하지 않습니다


15

Magento의 카탈로그 규칙 일일 업데이트가 작동하지 않는다는 문제가 있습니다. 즉, 카탈로그 규칙의 만료 날짜가 올 때 제품 가격이 변경되지 않으므로 관리자에서 규칙 적용 버튼을 눌러야합니다. Cron이 구성되어 작동 중입니다. catalogrule / observer :: dailyCatalogUpdate 메소드는 매일 자동으로 규칙을 확인하고 적용해야하지만 보이지는 않습니다 (수동으로 시작하려고 시도했습니다). 마 젠토 코어 코드는 다음과 같습니다.

<!--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 테이블의 메시지 열에 오류가 기록되어 있습니까? 나는 관찰자 메소드를 수정하여 약간의 성공을 거두었 음을 나타 내기 때문에 cron이 실제로 호출되고 있다고 가정합니다.
davidalger

또한 원래 관찰자에 일부 로그 호출을 배치하고 호출되는지 확인할 수 있습니다. 그냥 안전하기 위해.
Petar Dzhambazov 2016 년

답변:


7

최근에 프로젝트의 새로운 가격 규칙을 테스트 할 때도 같은 문제가있었습니다. 그리고 두통의 원인은 새로운 규칙을 만들거나 기존 규칙 중 일부를 편집 할 때마다 " 규칙 적용 "버튼을 눌러 규칙 변경 사항을 Magento에 알리도록하는 것이 었습니다.


2
대단히 감사합니다. 맞습니다. 규칙을 저장하는 것만으로는 충분하지 않습니다. 규칙이 적용되었는지 여부를 알려주는 규칙 그리드에 추가 열이있는 것이 좋습니다.
vovsky

dailyCatalogUpdate는 해당 버튼을 누르지 않으면 매일 밤 규칙을 적용한다고 가정합니다. 그렇지 않으면 그 크론의 목적은 무엇입니까?
Goose

7

"규칙 적용"을 누르는 것만으로는 충분하지 않습니다. 최근에 cron이 올바르게 설정되지 않으면 나중에 언젠가는 규칙이 적용되지 않는다는 것을 발견했습니다.

규칙이 작동을 멈췄을 때 나는 정말로 못을 박았다. 제 경우에는 고객 그룹 (도매)을 기준으로 적용되는 몇 가지 규칙이있었습니다.

  1. cron_schedule테이블을 확인하십시오 . 여기에 해당하는 항목이 있는지 확인하십시오 catalogrule_apply_all(프로세스 이름이라고 생각합니다).
  2. CatalogRule 모듈 config.xml파일 의 cronjob을 1 분마다 (테스트 용) * / 1로 실행하도록 설정하십시오 .
  3. cron_schedule테이블을 다시 보면서 몇 분마다 다시로드하십시오. 상점의 파일 을 수동 으로 누르지 않아도 새로운 프로세스가 자동으로 추가 / 실행됩니다 cron.php.
  4. 프로세스가 수동으로 업데이트되는 것을 보지 못하면 사이트 파일을 소유 한 사용자로 사이트에 SSH로 접속하십시오. 커맨드 라인에서 : crontab -e(당신은 Vim에있을 수 있으며 무엇을 해야할지 모르겠습니다. 기본 Vim 명령 사용에 대한 Google을 제안합니다).
  5. crontab을 실행하도록 설정하십시오. */1 * * * * /path/to/your/cron.sh
  6. 이제 cron_schedule테이블을 다시 확인하여 cron 프로세스가 자동으로 실행되는지 확인하십시오.
  7. 이 시점에서 모든 것이 좋기를 바랍니다. 계속해서 돌아가서 원하는 간격으로 실행되도록 cron 프로세스를 설정하십시오.

3

작업이 예약되었는지 확인

데이터베이스를 확인하거나 다음 확장을 설치하여이를 수행 할 수 있습니다. Aoe_Scheduler

작업이 작동하는지 테스트

PHP 스크립트를 작성 run_my_rules.php하고 함수의 내용 만 넣으십시오. dailyCatalogUpdate그런 다음 콘솔에서 실행하십시오. 무슨 일이 일어나고 있는지보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.