定时任务

注意需要在Linux环境下运行,且让PHP的system函数取消禁用

1、需要先设置cron ,让 ./yii cron/run 可以每分钟运行。

例如:

//每分钟执行一次定时任务
* * * * * /[你的项目地址]/yii cron/run

2、在 console/config/params.php 中加入新的定时任务:

    'cronJobs' => [
        // 清理过期的微信历史消息记录
        // 每天凌晨执行一次
        'msg-history/index' => [
            'cron' => '0 0 * * *',
            'cron-stdout'=> '/tmp/rageframe/cron/MsgHistory.log',// 成功日志
            'cron-stderr'=> '/tmp/rageframe/cron/MsgHistoryError.log',// 错误日志
        ]
        //......更多的定时任务
    ],

3、如果想修改定时任务运行时间可以在console/config/params.php文件配置cron

每隔2分钟运行一次

    'cron' => '*/2 * * * *',

举个例子

上面设置了一个清理历史消息的定时任务,查看文件 console\controllers\MsgHistoryController

<?php
namespace console\controllers;

use Yii;
use yii\console\Controller;

/**
 * Class MsgHistory
 * @package console\controllers
 */
class MsgHistoryController extends Controller
{
    /**
     * 清理过期的历史记录
     */
    public function actionIndex()
    {
        if(true)
        {
            echo date('Y-m-d H:i:s') . ' --- ' . '清理成功;';
            exit();
        }

        echo date('Y-m-d H:i:s') . ' --- ' . '数据设置未清除;';
        exit();
    }
}

查看是否被执行,执行过会在/tmp下面生成一个日志文件,注意定时任务设置的执行时间,测试的话可以改成每分钟执行一次

其他说明

分:每10,25,26,27,28,29,30,40分钟

时:每天第2(偶数)小时

天:15至21和从23至27的数

月:一月至六月,偶数月

周:不管第几周

    'cron' => '10,25-30,40 *\2 15-21,23-27 1-6\2 *',

表达式详细可以查看

cron表达式生成器


上次更新:2018-04-18