Magento 2创建Cron Job正在按时设置自动计划,这在您运行 Magento 2商店时非常方便。为什么这么有用呢?例如,您需要从网站统计或内容管理系统等需要在特定时间运行的软件进行协助,但是,您可能无法这样做。这就是您必须在Web服务器上创建Cron作业的原因。
你在寻找一个难以理解的教程吗?这篇文章全部适合你。这里将提到简单明了的说明。
目录
- 什么是Cron Job?
- 为什么需要Cron Job?
- 运行并创建Cron作业
- 创建crontab.xml
- 创建Test.php
什么是Cron工作?
Cron作业是Linux的一个很棒的功能,Linux是用户的免费操作系统。cron作业将创建适合您要执行的任务的命令或脚本。cronjob不是手动工作,而是允许在准确的时间和日期自动运行。由于其自动化,cron作业是每个日期或每周重复项目的完美选择。
注意
Cron配置在Magento中非常重要,可以为许多系统活动设置时间表,例如重新索引,自动更新货币汇率,Magento电子邮件等。只有在配置正确时,才能激活cron作业。在发生错误的情况下,这意味着Magento将无法按预期运行。
为什么需要Cron Job
几个Magento功能需要至少一个Cron作业,它将安排将来发生的活动。以下是这些活动的部分清单:
- 目录价格规则
- 简讯
- 生成Google站点地图
- 客户提醒/通知(产品价格变动,产品有库存)
- 重建索引
- 私人销售(仅限Magento Commerce)
- 自动更新货币汇率
- 所有Magento电子邮件(包括订单确认和交易)
运行并创建cron作业
在您设置cron时间表时,请按照指南按照您的意愿启动cron作业程序。
- 在“Cron”文件夹中创建一个类
- 使用PHP手动设置cron计划:
bin/magento cron:run
var/log/system.log
在cronjob运行后查找日志。- 登录Magento 2 Admin面板,执行路径:
Stores > Configuration > Advanced > System
,然后更改每个cron组的调度程序设置。 - 最后,从命令行运行cron:
magento cron:run [--group="<cron group name>"]
现在,我们将在HelloWorld模块中添加一个自定义cron 。
创建 crontab.xml
文件: app/code/Mageplaza/HelloWorld/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="Mageplaza\HelloWorld\Cron\Test" method="execute" name="mageplaza_helloworld_cron">
<schedule>* * * * *</schedule>
</job>
</group>
</config>
group id
是你的cron组名。您一次只能为单个组运行cron。job instance
是要实例化的类(classpath)。job method
是方法job instance
来调用。job name
是此cron作业的唯一ID。schedule
以cron格式安排。下图显示了它包含的内容:
* * * * * command to be executed
| | | | |
| | | | +----- Day of week (0 - 7) (Sunday=0 or 7)
| | | +------- Month (1 - 12)
| | +--------- Day of month (1 - 31)
| +----------- Hour (0 - 23)
+------------- Minute (0 - 59)
在crontab.xml
中,我们定义job instance
为Mageplaza\HelloWorld\Cron\Test
。它应该立即创建。
创建Test.php
文件: app/code/Mageplaza/HelloWorld/Cron/Test.php
内容将是:
<?php
namespace Mageplaza\HelloWorld\Cron;
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;
}
}
全部完成后,请刷新缓存并从命令行运行magento cron:run --group="default"
。
要检查Cron是否正常工作,请转到var/log/cron.log
您的商店,您将看到其中的文字Mageplaza\HelloWorld\Cron\Test::execute
。