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


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.