Bagaimana cara menjalankan cron job pada waktu tertentu di Magento 2?

Aug 20 2020

Saya ingin membuat tugas cron yang memperbarui harga produk yang dinonaktifkan dan cron berjalan pada waktu tertentu 1 kali dalam sehari.

Saya telah membuat modul dasar khusus dari mengambil referensi dari https://www.mageplaza.com/devdocs/magento-2-create-cron-job/

Crontab.xml saya (path: 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>

test.php saya adalah

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

}
}

Tapi itu tidak menampilkan pesan di file cron.log. Apa yang saya lewatkan, bantuan apa pun, saya hargai.

Jawaban

1 Msquare Aug 20 2020 at 12:53

Tambahkan File Ini ke Modul Kustom Anda dan periksa dulu modul Anda apakah aktif atau tidak. Modul Anda harus diaktifkan.

Buat kelas untuk menjalankan 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');
    }
}

Buat crontab.xml

app / code / VendoreName / ModuleName / dll

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>

Kompilasi dan bersihkan cache

bin/magento s:up
bin/magento setup:di:compile
bin/magento cache:clean

Verifikasi pekerjaan cron

Langkah ini menunjukkan cara memverifikasi pekerjaan cron kustom berhasil menggunakan kueri SQL pada tabel database cron_schedule.

  1. Jalankan pekerjaan Magento cron:
bin/magento cron:run
  1. Masukkan magento cron: jalankan perintah dua atau tiga kali.

Pertama kali Anda memasukkan perintah, itu mengantri pekerjaan; selanjutnya, tugas cron dijalankan. Anda harus memasukkan perintah tersebut setidaknya dua kali.

  1. Jalankan kueri SQL SELECT * dari cron_schedule WHERE job_code seperti '% custom%'
  1. Verifikasi pesan yang ditulis ke log sistem Magento:
var/www/html/magento_root/var/log/system.log

Klik Di Sini untuk lebih lanjut

Saya Berharap Ini Membantu Anda.