系统学习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"]