Comment exécuter une tâche cron à un moment donné dans Magento 2?
Je veux créer un travail cron qui met à jour le prix du produit qui est désactivé et le cron s'exécute à une heure spécifique 1 fois par jour.
J'ai créé un module de base personnalisé à partir de la prise de référence de https://www.mageplaza.com/devdocs/magento-2-create-cron-job/
Mon crontab.xml (chemin: app / code / Product / 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>
mon test.php est
<?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;
}
}
Mais il ne me montre pas de message dans le fichier cron.log. Ce qui me manque, toute aide est appréciée.
Réponses
Ajoutez ces fichiers à votre module personnalisé et vérifiez d'abord que votre module est activé ou non. Votre module doit être activé.
Créer une classe pour exécuter 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');
}
}
Créer crontab.xml
app / code / 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>
Compiler et nettoyer le cache
bin/magento s:up
bin/magento setup:di:compile
bin/magento cache:clean
Vérifiez le travail cron
Cette étape montre comment vérifier correctement le travail cron personnalisé à l'aide d'une requête SQL sur la table de base de données cron_schedule.
- Exécutez les tâches cron Magento:
bin/magento cron:run
- Entrez la commande magento cron: run deux ou trois fois.
La première fois que vous entrez la commande, elle met les travaux en file d'attente; par la suite, les travaux cron sont exécutés. Vous devez saisir la commande au moins deux fois.
- Exécutez la requête SQL SELECT * à partir de cron_schedule WHERE job_code comme '% custom%'
- Vérifiez que les messages sont écrits dans le journal système de Magento:
var/www/html/magento_root/var/log/system.log
Cliquez ici pour en savoir plus
J'espère que ceci vous aide.