Magento 2에서 특정 시간에 크론 작업을 실행하는 방법은 무엇입니까?

Aug 20 2020

비활성화 된 제품 가격을 업데이트하고 cron이 하루에 한 번 특정 시간에 실행되는 cron 작업을 만들고 싶습니다.

참조를 가져 와서 사용자 지정 기본 모듈을 만들었습니다. https://www.mageplaza.com/devdocs/magento-2-create-cron-job/

내 crontab.xml (경로 : app / code / Product / Cron / etc / crontab.xml)

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="default">
    <job instance="Product\Cron\Cron\Test" method="execute" name="mageplaza_helloworld_cron">
        <schedule>*/1 * * * *</schedule>
    </job>
</group>
</config>

내 test.php는

<?php

namespace Cron\Run\Cron; (path : app/code/Product/Cron/Cron/Test.php )

class Test
{

public function execute()
{

    $writer = new \Zend\Log\Writer\Stream(BP . '/var/log/cron.log'); $logger = new \Zend\Log\Logger();
    $logger->addWriter($writer);
    $logger->info(__METHOD__); return $this;

}
}

하지만 cron.log 파일에 메시지가 표시되지 않습니다. 내가 어떤 도움을 놓치고 있니 감사합니다.

답변

1 Msquare Aug 20 2020 at 12:53

이 파일을 사용자 정의 모듈에 추가하고 먼저 모듈이 활성화되어 있는지 확인하십시오. 모듈이 활성화되어 있어야합니다.

크론을 실행하는 클래스 만들기

앱 / 코드 / VendoreName / ModuleName / Cron

Test.php

<?php
namespace VendoreName\ModuleName\Cron;

use Psr\Log\LoggerInterface;

class Test {
    protected $logger; public function __construct(LoggerInterface $logger) {
        $this->logger = $logger;
    }

    public function execute() {
        $this->logger->info('Cron Works');
    }
}

crontab.xml 만들기

앱 / 코드 / VendoreName / ModuleName / etc

crontab.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
    <group id="default">
        <job name="custom_cronjob" instance="VendoreName\ModuleName\Cron\Test" method="execute">
            <schedule>* * * * *</schedule>
        </job>
    </group>
</config>

컴파일 및 캐시 정리

bin/magento s:up
bin/magento setup:di:compile
bin/magento cache:clean

크론 작업 확인

이 단계에서는 cron_schedule 데이터베이스 테이블에서 SQL 쿼리를 사용하여 사용자 지정 크론 작업을 성공적으로 확인하는 방법을 보여줍니다.

  1. Magento cron 작업을 실행합니다.
bin/magento cron:run
  1. magento cron : run 명령을 두세 번 입력합니다.

명령을 처음 입력하면 작업을 큐에 넣습니다. 이후에 cron 작업이 실행됩니다. 명령을 두 번 이상 입력해야합니다.

  1. cron_schedule WHERE job_code에서 '% custom %'과 같은 SQL 쿼리 SELECT *를 실행합니다.
  1. Magento의 시스템 로그에 메시지가 기록되는지 확인합니다.
var/www/html/magento_root/var/log/system.log

자세한 내용은 여기를 클릭하십시오

도움이 되었기를 바랍니다.