您的位置:首页 > 其它

magento2 配置自定义定时任务(cron )和计划组(cron group)教程

2017-05-29 18:10 603 查看
本教程教你一步一步的创建一个自定义的cron job(定时任务),任选一个cron group。

1: 获取示例模块

登录到magento服务器,切换到 Magento 2文件系统所有者.

克隆 magento2 样本库.

示例

cd ~
git clone git@github.com:magento/magento2-samples.git


创建一个目录来拷贝示例代码:

mkdir -p /var/www/html/magento2/app/code/Magento/SampleMinimal


复制示例模块代码:

cp -r ~/magento2-samples/sample-module-minimal/* /var/www/html/magento2/app/code/Magento/SampleMinimal


验证文件是否正确复制:

ls -al /var/www/html/magento2/app/code/Magento/SampleMinimal

You should see the following result:

drwxrwsr-x.   4 magento_user apache  4096 Oct 30 13:19 .
drwxrwsr-x. 121 magento_user apache  4096 Oct 30 13:19 ..
-rw-rw-r--.   1 magento_user apache   372 Oct 30 13:19 composer.json
drwxrwsr-x.   2 magento_user apache  4096 Oct 30 13:19 etc
-rw-rw-r--.   1 magento_user apache 10376 Oct 30 13:19 LICENSE_AFL.txt
-rw-rw-r--.   1 magento_user apache 10364 Oct 30 13:19 LICENSE.txt
-rw-rw-r--.   1 magento_user apache  1157 Oct 30 13:19 README.md
-rw-rw-r--.   1 magento_user apache   270 Oct 30 13:19 registration.php
drwxrwsr-x.   3 magento_user apache  4096 Oct 30 13:19 Test


更新Magento 2 数据库和schema:

php /var/www/html/magento2/bin/magento setup:upgrade


2: 验证样本模块

用管理员身份登录magento 2后台
点击 Stores > Configuration > ADVANCED >
Advanced
.

如下图:



3: 创建一个类来运行cron

为类创建目录并更改目录:

mkdir /var/www/html/magento2/app/code/Magento/SampleMinimal/Cron && cd /var/www/html/magento2/app/code/Magento/SampleMinimal/Cron


在目录中创建了一个名为
Test.php
的文件:

<?php
namespace Magento\SampleMinimal\Cron;
use \Psr\Log\LoggerInterface;

class Test {
protected $logger;

public function __construct(LoggerInterface $logger) {
$this->logger = $logger;
}

/**
* Write to system.log
*
* @return void
*/

public function execute() {
$this->logger->info('Cron Works');
}

}


4: 创建
crontab.xml

/var/www/html/magento2/app/code/Magento/SampleMinimal/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 name="custom_cronjob" instance="Magento\SampleMinimal\Cron\Test" method="execute">
<schedule>* * * * *</schedule>
</job>
</group>
</config>


5: 验证cron job

运行 Magento cron jobs:

php /var/www/html/magento2/bin/magento cron:run


输入
magento cron:run
命令

运行查询sql
SELECT * from cron_schedule WHERE job_code like '%custom%'
如下:

输入
mysql -u magento -p

输入
use magento;

输入
SELECT * from cron_schedule WHERE job_code like '%custom%';

查询结果:

+-------------+----------------+---------+----------+---------------------+---------------------+---------------------+---------------------+
| schedule_id | job_code       | status  | messages | created_at          | scheduled_at        | executed_at         | finished_at         |
+-------------+----------------+---------+----------+---------------------+---------------------+---------------------+---------------------+
|        3670 | custom_cronjob | success | NULL     | 2016-11-02 09:38:03 | 2016-11-02 09:38:00 | 2016-11-02 09:39:03 | 2016-11-02 09:39:03 |
|        3715 | custom_cronjob | success | NULL     | 2016-11-02 09:53:03 | 2016-11-02 09:53:00 | 2016-11-02 09:54:04 | 2016-11-02 09:54:04 |
|        3758 | custom_cronjob | success | NULL     | 2016-11-02 10:09:03 | 2016-11-02 10:09:00 | 2016-11-02 10:10:03 | 2016-11-02 10:10:03 |
|        3797 | custom_cronjob | success | NULL     | 2016-11-02 10:24:03 | 2016-11-02 10:24:00 | 2016-11-02 10:25:03 | 2016-11-02 10:25:03 |
+-------------+----------------+---------+----------+---------------------+---------------------+---------------------+---------------------+


6: 设置自定义 cron group

打开
crontab.xml
在文本编辑器.
更改
<group id="default">
<group id="custom_crongroup">

保存.
创建
/var/www/html/magento2/app/code/Magento/SampleMinimal/etc/cron_groups.xml
具有以下内容:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/cron_groups.xsd">
<group id="custom_crongroup">
<schedule_generate_every>1</schedule_generate_every>
<schedule_ahead_for>4</schedule_ahead_for>
<schedule_lifetime>2</schedule_lifetime>
<history_cleanup_every>10</history_cleanup_every>
<history_success_lifetime>60</history_success_lifetime>
<history_failure_lifetime>600</history_failure_lifetime>
</group>
</config>


7: 验证 cron group

运行cron job 在Magento自定义组:

php /var/www/html/magento2/bin/magento cron:run --group="custom_crongroup"

至少运行两次命令。

清除magento 2缓存:

php /var/www/html/magento2/bin/magento cache:clean


用管理员身份登录到后台.
点击 Stores > Configuration > Advanced >System.

在右窗格中展开 Cron.

如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息