Magento 2 Create Cron Job正在按时设置自动计划,这在您运行Magento 2 商店时非常方便。为什么它是一个如此有用的功能?例如,网站统计或内容管理系统等软件可能需要在特定时间进行活动,但您无法手动处理。这就是在您的 Web 服务器上创建 Cron Job 变得很方便的时候。

不用担心复杂的教程,因为我在这里是为了让您简单易懂。即使您不懂技术,您仍然可以轻松学习。

Magento 2 以编程方式创建 Cron 作业

  • 什么是 Cron 作业?
  • 如何在 Magento 2 中创建 Cron 作业
    • 创建 crontab.xml
    • 创建测试.php
  • Magento 2 中 Cron Job 的应用

什么是 Cron 作业?

Cron Job是 Linux(用户免费的操作系统)的一个很棒的功能。cron 作业将创建适合您想要执行的任务的命令或脚本。Cron Job 允许在准确的时间和日期自动运行,而不是手动工作。由于其自动化,Cron Jobs 是每天或每周重复项目的完美选择。

笔记

Cron 配置在 Magento 中非常重要,它可以为许多系统活动设置时间表,例如重新索引、自动更新汇率、Magento 电子邮件等。只有当配置正确时,cron 作业才会激活。如果出现错误,这意味着 Magento 将无法按预期运行。

如何在 Magento 2 中创建 Cron 作业

请按照指南按照您的意愿启动cron 作业程序:

  • 在“Cron”文件夹中创建一个类
  • 使用 PHP 手动设置 cron 计划:bin/magento cron:run
  • var/log/system.log在 cron 作业运行后查找日志。
  • 登录到 Magento 2 管理面板,按照路径执行:Stores > Configuration > Advanced > System,然后更改每个 cron 组的调度程序设置。
  • 最后,从命令行运行 cron:

magento cron:run [--group="<cron group name>"]

现在,我们将在HelloWorld 模块中添加一个自定义 cron 。

创造crontab.xml

文件:app/code/Example/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="Example\HelloWorld\Cron\Test" method="execute" name="example_helloworld_cron">
			<schedule>* * * * *</schedule>
		</job>
	</group>
</config>

  • group id是你的 cron 组名称。您一次只能为单个组运行 cron。
  • job instance是要实例化的类(类路径)。
  • 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 instanceExample\HelloWorld\Cron\Test。现在应该已经创建了。

创建测试.php

文件:app/code/Example/HelloWorld/Cron/Test.php

内容将是:


<?php

namespace Example\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文本。Example\HelloWorld\Cron\Test::execute

Magento 2 中 Cron Job 的应用

Magento 的多项功能至少需要一项 Cron Job,它安排未来发生的活动。这些活动的部分列表如下:

  • 目录价格规则
  • 时事通讯
  • 生成 Google 站点地图
  • 客户警报/通知(产品价格变化、产品有货)
  • 重新索引
  • 私人销售(仅限 Magento Commerce)
  • 自动更新货币汇率
  • 所有 Magento 电子邮件(包括订单确认和交易电子邮件)