当前位置: 技术文章>> 在Magento 2中运行cron定时任务

文章标题:在Magento 2中运行cron定时任务
  • 文章分类: Magento
  • 22111 阅读
系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》

本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。


当涉及到Magento 2和cron作业时,与Magento 1相比有一些改进。

它仍然是抽象的,因为您并不真正直接运行作业,而是使用 cron 语法通过 Magento 调度程序设置定期方法执行,该调度程序在系统的 cron 实用程序之上工作。

以下是一些有用的提示,可帮助您开始设置自己的提示。

当我们将其与Magento 1进行比较时,数据库似乎没有更改,但是配置确实发生了变化。

Magento 2将执行表中cron_schedule条目,就像在Magento 1中一样。

配置中的新闻是,现在我们能够对作业进行分组,并选择是否希望将作业作为单独的进程并行执行,这有时可能会非常方便。

因此,为了在Magento中运行计划任务,首先我们需要确保将以下作业配置为通过系统cron运行。这是最简单的方法:

*/1 * * * * /path/to/php /path/to/m2/installation/bin/magento cron:run [>> /log/file &]

*/1 * * * * /path/to/php /path/to/m2/installation/update/cron.php [>> /log/file &]

*/1 * * * * /path/to/php /path/to/m2/installation/bin/magento setup:cron:run [>> /log/file &

此时,您已经准备好了所有这些 M2 默认作业!

那么,如何做好自己的工作呢?

或多或少,这是以与Magento 1类似的方式完成的。

首先,您需要在自定义模块中.xml crontab:

<?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"> <!-- Doesn't need to be unique -->
        <job name="cron_example" instance="Inchoo\CronExample\Cron\Example" method="execute">
            <schedule>* * * * *</schedule>
        </job>
    </group>
</config>


上面的配置是为了确保每分钟运行一次Inchoo\CronExample\Cron\Example:execute(),这将(根据下面的代码每分钟记录它的名字。

<?php
namespace Inchoo\CronExample\Cron;
class Example {
 
    protected $_logger;
 
    public function __construct(\Psr\Log\LoggerInterface $logger) {
        $this->_logger = $logger;
    }
 
    public function execute() {
        $this->_logger->info(__METHOD__);
        return $this;
    }
}


还值得一提的是,您当时可以选择只运行一个作业组。

以下是您的操作方法:

magento cron:run [--group="cron_group_name"]



推荐文章