Magento 2: exécuter Cron


11

Comment puis-je exécuter Cron à partir de la ligne de commande manuellement.

Dans Magento 1.x, nous pouvons exécuter cron comme:

www.testsite.com/cron.php 

mais dans magento 2, comment faire?

Veuillez également m'aider à savoir comment exécuter cron à partir de cmd. J'ai déjà utilisé la commande ci-dessous qui ne fonctionne pas:

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

Cela renvoie une exception:

[RuntimeException]   
Too many arguments.  

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

------- Mettre à jour -------

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>

Dans la méthode d'exécution du fichier ci-dessus, je mets le journal. Mais après 1 minute, cela n'est pas non plus généré. Comment savoir que ma méthode est exécutée?


Il me semble, du moins, que vous pouvez toujours les exécuter comme Mage 1 en faisant yoursite.com/update/cron.php
tim.baker

Réponses:


17

Vous n'avez pas besoin des crochets lorsque vous exécutez la commande, vous devez donc exécuter:

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

Oui, cela donne une réponse "Ran jobs by schedule". Mais veuillez vérifier ma mise à jour.
Krupali

4

J'ai un peu fusionné les autres réponses de ce post - de sorte qu'un seul fichier est nécessaire, et les tâches cron peuvent être exécutées via un navigateur ou une ligne de commande.

Utilisation via la ligne de commande:

php cronLaunch.php "Vendor\Module\Class"

Utilisation via navigateur:

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

Installation

Je suggère de copier le code source par le bas et de le stocker src/pub/hidden/cronLaunch.php. Il est très important de protéger l' hiddenannuaire de tout accès non autorisé!

<?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);

Merci et remerciements à toutes les autres personnes qui ont posté des réponses ici!


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

Les []crochets d'un prototype de ligne de commande indiquent simplement que les arguments qu'ils contiennent sont facultatifs.
Dans ce cas, il indique également qu'ils peuvent être chaînés.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.