Magento 2: Uruchom Crona

11

Jak ręcznie uruchomić Crona z wiersza poleceń.

W Magento 1.x możemy uruchomić crona jak:

www.testsite.com/cron.php 

ale jak mogę to zrobić w Magento 2?

Proszę również o pomoc w tym, jak mogę wykonać crona z cmd. Użyłem już poniższej komendy, która nie działa:

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

To jest zwracany wyjątek:

[RuntimeException]   
Too many arguments.  

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

------- Aktualizacja -------

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>

W metodzie powyższego pliku wstawiam log. Ale po 1 minucie też się nie generuje, więc skąd mam wiedzieć, że moja metoda została wykonana.

Krupali
źródło
Dla mnie wygląda to tak, jakbyś mógł nadal uruchamiać je jak Mag 1, robiąc yoursite.com/update/cron.php
tim.baker

Odpowiedzi:

17

Po uruchomieniu polecenia nie potrzebujesz nawiasów, dlatego powinieneś uruchomić:

sudo php bin/magento cron:run --group="customgroupname_cron"
Raphael at Digital Pianism
źródło
Tak, to daje odpowiedź, że „Zadania były wykonywane zgodnie z harmonogramem”. Ale proszę sprawdź moją zaktualizowaną wersję.
Krupali
4

Trochę połączyłem pozostałe odpowiedzi z tego postu - tak, że potrzebny jest tylko jeden plik, a zadania cron można uruchamiać za pomocą przeglądarki lub wiersza polecenia.

Użycie za pomocą wiersza poleceń:

php cronLaunch.php "Vendor\Module\Class"

Korzystanie z przeglądarki:

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

Instalacja

Sugeruję, aby skopiować kod źródłowy od dołu i przechowywać go src/pub/hidden/cronLaunch.php. Bardzo ważne jest, aby chronić hiddenkatalog przed nieautoryzowanym dostępem!

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

Podziękowania i podziękowania dla wszystkich innych osób, które opublikowały tutaj odpowiedzi!

Hej
źródło
3
cron:run [--group="..."] [--bootstrap="..."]

Te []wsporniki w prototypie linii poleceń wskazują jedynie, że argumenty w nich zawarte są opcjonalne.
W tym przypadku stwierdza również, że są one łańcuchowe.

Julien Lachal
źródło