Magento 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行うことによってメイジ1のようにそれらを実行することができますように、少なくとも私には、見える
tim.bakerを

回答:


17

コマンドを実行するときに角括弧は必要ないため、次のコマンドを実行する必要があります。

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

はい、これは「スケジュールに従ってジョブを実行した」という応答を与えています。しかし、私の更新された質問を確認してください。
Krupali 2016年

4

この投稿からの他の回答を少しマージしました。これにより、1つのファイルのみが必要になり、ブラウザーまたはコマンドラインからcronジョブを実行できます。

コマンドラインを介した使用法:

php cronLaunch.php "Vendor\Module\Class"

ブラウザ経由の使用:

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

取り付け

下からソースコードをコピーしてに保存することをお勧めしますsrc/pub/hidden/cronLaunch.phphidden不正アクセスからディレクトリを保護することは非常に重要です!

<?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.