마 젠토 2 : Cron 실행


11

명령 줄에서 Cron을 수동으로 어떻게 실행할 수 있습니까 ?

Magento 1.x에서는 다음과 같이 cron을 실행할 수 있습니다.

www.testsite.com/cron.php 

하지만 magento 2에서는 어떻게 할 수 있습니까?

cmd에서 cron을 실행하는 방법에 대해서도 알려주십시오. 작동하지 않는 아래 명령을 이미 사용했습니다.

sudo php bin/magento cron:run [--group="customgroupname_cron"]

이것은 예외를 반환합니다.

[RuntimeException]   
Too many arguments.  

cron:run [--group="..."] [--bootstrap="..."]

------- 업데이트 -------

crontab.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">

    <group id="customgroupname_cron">
        <job name="customgroupname_cron" instance="Namespace\Modulename\Cron\Customcronjob" method="execute">
            <schedule>* * * * *</schedule>
        </job>
    </group>
</config>

위 파일의 실행 방법에서 로그를 넣습니다. 그러나 1 분 후에도 생성되지 않으므로 내 방법이 실행되었음을 어떻게 알 수 있습니까?


yoursite.com/update/cron.php
tim.baker

답변:


17

명령을 실행할 때 대괄호가 필요하지 않으므로 다음을 실행해야합니다.

sudo php bin/magento cron:run --group="customgroupname_cron"

예, 이것은 "일정에 따라 일자리를"다 "는 응답을 제공합니다. 그러나 업데이트 된 대기열을 확인하십시오.
Krupali

4

이 게시물의 다른 답변을 약간 병합하여 하나의 파일 만 필요하며 브라우저 또는 명령 줄을 통해 cron 작업을 실행할 수 있습니다.

명령 줄을 통한 사용법 :

php cronLaunch.php "Vendor\Module\Class"

브라우저를 통한 사용법 :

https://my.domain/hidden/cronLaunch.php?Vendor\Module\Class

설치

아래에서 소스 코드를 복사하여에 저장하는 것이 좋습니다 src/pub/hidden/cronLaunch.php. hidden무단 액세스로부터 디렉토리 를 보호하는 것이 매우 중요합니다 !

<?php
require '../../app/bootstrap.php';
if (php_sapi_name() !== 'cli' && isset($_GET['job'])) {
    define('CRONJOBCLASS', $_GET['job']);
} elseif (php_sapi_name() !== 'cli') {
    die('Please add the class of the cron job you want to execute as a job parameter (?job=Vendor\Module\Class)');
} elseif (!isset($argv[1])) {
    die('Please add the class of the cron job you want to execute enclosed IN DOUBLE QUOTES as a parameter.' . PHP_EOL);
} else {
    define('CRONJOBCLASS', $argv[1]);
}

class CronRunner extends \Magento\Framework\App\Http
    implements \Magento\Framework\AppInterface
{

    public function __construct(
        \Magento\Framework\App\State $state,\Magento\Framework\App\Response\Http $response)
    {
        $this->_response = $response;
        $state->setAreaCode('adminhtml');
    }

    function launch()
    {
        $cron = \Magento\Framework\App\ObjectManager::getInstance()
            ->create(CRONJOBCLASS);

        $cron->execute();
        return $this->_response;
    }
}

$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$app = $bootstrap->createApplication('CronRunner');
$bootstrap->run($app);

여기에 답변을 게시 한 다른 모든 사람들에게 감사와 크레딧을드립니다!


3
cron:run [--group="..."] [--bootstrap="..."]

[]명령 행 프로토 타입 의 대괄호는 단지 포함 된 인수가 선택 사항임을 나타냅니다.
이 경우 체인 가능하다는 것도 나타냅니다.

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