จะเรียกใช้งาน cron ในช่วงเวลาใดเวลาหนึ่งใน Magento 2 ได้อย่างไร
ฉันต้องการสร้างงาน cron ซึ่งอัปเดตราคาสินค้าที่ปิดใช้งานและ cron ทำงานในเวลาที่กำหนด 1 ครั้งในหนึ่งวัน
ฉันได้สร้างโมดูลพื้นฐานที่กำหนดเองจากการอ้างอิงจากไฟล์ https://www.mageplaza.com/devdocs/magento-2-create-cron-job/
crontab.xml ของฉัน (เส้นทาง: แอป / รหัส / ผลิตภัณฑ์ / 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 ของฉันคือ
<?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;
}
}
แต่มันไม่แสดงข้อความในไฟล์ cron.log ฉันพลาดอะไรไปขอความช่วยเหลือ
คำตอบ
เพิ่มไฟล์นี้ในโมดูลที่กำหนดเองของคุณและก่อนอื่นให้ตรวจสอบว่าโมดูลของคุณเปิดใช้งานหรือไม่ โมดูลของคุณต้องเปิดใช้งาน
สร้างคลาสเพื่อเรียกใช้ cron
แอป / รหัส / 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');
}
}
สร้าง crontab.xml
app / code / VendoreName / ModuleName / ฯลฯ
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>
คอมไพล์และแคชสะอาด
bin/magento s:up
bin/magento setup:di:compile
bin/magento cache:clean
ตรวจสอบงาน cron
ขั้นตอนนี้แสดงวิธีการตรวจสอบงาน cron แบบกำหนดเองโดยใช้แบบสอบถาม SQL บนตารางฐานข้อมูล cron_schedule
- เรียกใช้งาน Magento cron:
bin/magento cron:run
- ป้อน magento cron: run คำสั่งสองหรือสามครั้ง
ครั้งแรกที่คุณป้อนคำสั่งระบบจะจัดคิวงาน ต่อมามีการเรียกใช้งาน cron คุณต้องป้อนคำสั่งอย่างน้อยสองครั้ง
- เรียกใช้แบบสอบถาม SQL SELECT * จาก cron_schedule WHERE job_code เช่น '% custom%'
- ตรวจสอบว่าข้อความถูกเขียนลงในบันทึกระบบของ Magento:
var/www/html/magento_root/var/log/system.log
คลิกที่นี่เพื่อดูข้อมูลเพิ่มเติม
ฉันหวังว่านี่จะช่วยคุณได้