Magento 2: Ejecutar Cron


11

¿Cómo puedo ejecutar Cron desde la línea de comandos manualmente?

En Magento 1.x podemos ejecutar cron como:

www.testsite.com/cron.php 

pero en magento 2, ¿cómo puedo hacer esto?

Por favor, ayúdame también para saber cómo puedo ejecutar cron desde cmd. Ya utilicé el siguiente comando que no funciona:

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

Esta es la excepción de retorno:

[RuntimeException]   
Too many arguments.  

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

------- Actualización -------

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>

En el método de ejecución del archivo anterior pongo log. Pero después de 1 minuto tampoco se genera eso. Entonces, ¿cómo puedo saber que mi método se ejecuta?


Parece, al menos para mí, que todavía puedes ejecutarlos como Mage 1 haciendo yoursite.com/update/cron.php
tim.baker

Respuestas:


17

No necesita los corchetes cuando ejecuta el comando, por lo que debe ejecutar:

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

Sí, esto está dando una respuesta que "Ran trabajos por horario". Pero por favor revise mi consulta actualizada.
Krupali

4

Combiné un poco las otras respuestas de esta publicación, por lo que solo se necesita un archivo y los trabajos cron se pueden ejecutar a través del navegador o la línea de comandos.

Uso a través de la línea de comando:

php cronLaunch.php "Vendor\Module\Class"

Uso a través del navegador:

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

Instalación

Sugiero copiar el código fuente desde abajo y almacenarlo en src/pub/hidden/cronLaunch.php. ¡Es muy importante proteger el hiddendirectorio de cualquier acceso no autorizado!

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

¡Gracias y créditos a todas las demás personas que publicaron respuestas aquí!


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

Los []corchetes en un prototipo de línea de comando simplemente indican que los argumentos que contienen son opcionales.
En este caso, también establece que son encadenables.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.