Magento 2: Execute Cron


11

Come posso eseguire Cron manualmente dalla riga di comando.

In Magento 1.x possiamo eseguire cron come:

www.testsite.com/cron.php 

ma in Magento 2 come posso farlo?

Ti prego, aiutami anche per come posso eseguire cron da cmd. Ho già usato sotto il comando che non funziona:

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

Questo sta restituendo un'eccezione:

[RuntimeException]   
Too many arguments.  

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

------- Aggiornare -------

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>

Nel metodo di esecuzione del file sopra ho messo il registro. Ma dopo 1 minuto anche questo non viene generato. Quindi, come posso sapere che il mio metodo viene eseguito.


Sembra, almeno per me, che tu riesca ancora a farli funzionare come Mage 1 facendo
yoursite.com/update/cron.php

Risposte:


17

Non hai bisogno delle parentesi quadre quando esegui il comando, quindi dovresti eseguire:

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

Sì, questo sta dando una risposta che "ha eseguito i lavori secondo la pianificazione". Ma per favore controlla la mia richiesta aggiornata.
Krupali,

4

Ho unito le altre risposte da questo post un po '- in modo che sia necessario solo un file e i lavori cron possono essere eseguiti tramite browser o riga di comando.

Utilizzo tramite riga di comando:

php cronLaunch.php "Vendor\Module\Class"

Utilizzo tramite browser:

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

Installazione

Suggerisco di copiare il codice sorgente dal basso e di memorizzarlo in src/pub/hidden/cronLaunch.php. È molto importante proteggere la hiddendirectory da qualsiasi accesso non autorizzato!

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

Grazie e ringraziamenti a tutte le altre persone che hanno pubblicato le risposte qui!


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

Le []parentesi quadre in un prototipo da riga di comando indicano semplicemente che gli argomenti che contengono sono opzionali.
In questo caso, afferma anche che sono concatenabili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.