¿Cómo ejecutar el trabajo cron en un momento particular en Magento 2?
Quiero crear un trabajo cron que actualice el precio del producto que está deshabilitado y el cron se ejecuta en un momento específico 1 vez al día.
He creado un módulo básico personalizado tomando como referencia https://www.mageplaza.com/devdocs/magento-2-create-cron-job/
Mi crontab.xml (ruta: aplicación / código / Producto / Cron / etc / crontab.xml)
<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="default">
<job instance="Product\Cron\Cron\Test" method="execute" name="mageplaza_helloworld_cron">
<schedule>*/1 * * * *</schedule>
</job>
</group>
</config>
mi test.php es
<?php
namespace Cron\Run\Cron; (path : app/code/Product/Cron/Cron/Test.php )
class Test
{
public function execute()
{
$writer = new \Zend\Log\Writer\Stream(BP . '/var/log/cron.log'); $logger = new \Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info(__METHOD__); return $this;
}
}
Pero no me muestra el mensaje en el archivo cron.log. Agradezco la ayuda que me falta.
Respuestas
Agregue estos archivos a su módulo personalizado y primero verifique que su módulo esté habilitado o no. Su módulo debe estar habilitado.
Crea una clase para ejecutar cron
app / code / VendoreName / ModuleName / Cron
Test.php
<?php
namespace VendoreName\ModuleName\Cron;
use Psr\Log\LoggerInterface;
class Test {
protected $logger; public function __construct(LoggerInterface $logger) {
$this->logger = $logger;
}
public function execute() {
$this->logger->info('Cron Works');
}
}
Cree crontab.xml
aplicación / código / VendoreName / ModuleName / etc
crontab.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="default">
<job name="custom_cronjob" instance="VendoreName\ModuleName\Cron\Test" method="execute">
<schedule>* * * * *</schedule>
</job>
</group>
</config>
Compilar y limpiar caché
bin/magento s:up
bin/magento setup:di:compile
bin/magento cache:clean
Verificar el trabajo cron
Este paso muestra cómo verificar correctamente el trabajo cron personalizado mediante una consulta SQL en la tabla de la base de datos cron_schedule.
- Ejecute trabajos cron de Magento:
bin/magento cron:run
- Ingrese el comando magento cron: run dos o tres veces.
La primera vez que ingresa el comando, pone en cola los trabajos; posteriormente, se ejecutan los trabajos cron. Debe ingresar el comando al menos dos veces.
- Ejecute la consulta SQL SELECT * desde cron_schedule WHERE job_code como '% custom%'
- Verifique que los mensajes estén escritos en el registro del sistema de Magento:
var/www/html/magento_root/var/log/system.log
Haga clic aquí para más
Espero que esto te ayude.