Come eseguire cron job in un determinato momento in Magento 2?
Voglio creare un cron job che aggiorni il prezzo del prodotto disabilitato e il cron venga eseguito a un'ora specifica 1 volta in un giorno.
Ho creato un modulo di base personalizzato prendendo come riferimento da https://www.mageplaza.com/devdocs/magento-2-create-cron-job/
Il mio crontab.xml (percorso: 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>
il mio test.php è
<?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;
}
}
Ma non mi mostra il messaggio nel file cron.log. Quello che mi manca è apprezzato.
Risposte
Aggiungi questi file al tuo modulo personalizzato e controlla prima che il modulo sia abilitato o meno. Il tuo modulo deve essere abilitato.
Crea una classe per eseguire 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');
}
}
Crea crontab.xml
app / code / VendoreName / ModuleName / ecc
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>
Compilare e pulire la cache
bin/magento s:up
bin/magento setup:di:compile
bin/magento cache:clean
Verifica il cron job
Questo passaggio mostra come verificare correttamente il cron job personalizzato utilizzando una query SQL sulla tabella del database cron_schedule.
- Esegui lavori cron di Magento:
bin/magento cron:run
- Inserisci il cron di magento: esegui il comando due o tre volte.
La prima volta che si immette il comando, mette in coda i lavori; successivamente, vengono eseguiti i cron job. Devi inserire il comando almeno due volte.
- Esegui la query SQL SELECT * da cron_schedule WHERE job_code come '% custom%'
- Verifica che i messaggi vengano scritti nel registro di sistema di Magento:
var/www/html/magento_root/var/log/system.log
Fare clic qui per ulteriori informazioni
Spero che questo ti aiuta.