• Yii2 创建定时任务


    在我们项目开发中,需要使用定时任务来完成批处理业务,下面通过Yii2框架来实现定时任务

    Yii2框架定时任务代码统一放在 ./console 目录下

    简单的定时任务脚步文件

    首先在console/controller目录下创建一个定时任务控制器TestController.php

    
    
    namespace console\controllers;
    
    use yii\console\Controller;
    
    class TestController extends Controller
    {
    
        /**
         * 执行测试脚本
         */
        public function actionDo()
        {
            echo 'hello test console';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在控制台运行命令php yii,会看到test控制下的do方法

    ······
    - test
        test/do                        执行测试脚本
    
    
    • 1
    • 2
    • 3
    • 4

    执行脚步命令php yii 控制器名/方法名,会输出

    php yii test/do
    hello test console
    
    • 1
    • 2

    这就完成了一个简单的定时任务脚步控制器

    传递参数

    如果需要传递参数

    
    
    namespace console\controllers;
    
    use yii\console\Controller;
    
    class TestController extends Controller
    {
        /**
         * @var integer 接收的参数
         */
        public $param1;
    
        /**
         * @var string 接收的参数
         */
        public $param2;
    
        /**
         * 设置参数
         * @param string $actionID
         * @return string[]
         */
        public function options($actionID)
        {
            return [
                'param1',
                'param2',
            ];
        }
    
        /**
         * 执行测试脚本
         */
        public function actionDo()
        {
            echo $this->param1 . PHP_EOL;
            echo $this->param2 . PHP_EOL;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    其中 param1param2就是参数,执行脚步命令php yii 控制器名/方法名 --参数= ····

    php yii test/do --param1=123 --param2=hello
    123
    hello
    
    • 1
    • 2
    • 3

    设置参数别名

    如果需要给参数设置别名

    
    
    namespace console\controllers;
    
    use yii\console\Controller;
    
    class TestController extends Controller
    {
        /**
         * @var integer 接收的参数
         */
        public $param1;
    
        /**
         * @var string 接收的参数
         */
        public $param2;
    
        /**
         * 设置参数
         * @param string $actionID
         * @return string[]
         */
        public function options($actionID)
        {
            return [
                'param1',
                'param2',
            ];
        }
    
        /**
         * 参数设置别名
         * @return array
         */
        public function optionAliases()
        {
            return [
                'p1' => 'param1',
                'p2' => 'param2'
            ];
        }
    
        /**
         * 执行测试脚本
         */
        public function actionDo()
        {
            echo $this->param1 . PHP_EOL;
            echo $this->param2 . PHP_EOL;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    其中 p1p2就是参数的别名,执行脚步命令php yii 控制器名/方法名 --参数= ····

    php yii test/do -p1=123 -p2=hello
    123
    hello
    
    • 1
    • 2
    • 3

    注意:设置参数别名后,使用别名参数用一个横杆(-)链接。

    在Linux配置crontab

    执行命令crontab -e,我们以每分钟执行一次为例

    */1 * * * * /usr/bin/php /var/www/html/yii2-project/yii test/do >/dev/null 2>&1
    
    • 1

    其中

    • /usr/bin/php 是php运行文件
    • /var/www/html/yii2-project/yii 项目目录中的yii 文件
    • test/do 是执行脚步命令
    • >/dev/null 2>&1 这么写就行哈,可自行查找

    保存退出即可。

  • 相关阅读:
    “KeyarchOS:国产Linux新星的崛起与创新之路“
    计算机网络——TCP / IP 网络模型
    【学习笔记】深度学习入门:基于Python的理论与实现-与学习相关的技巧
    balenaEtcher格式化的U盘恢复原来样子
    spring5.0 源码解析(day05) initMessageSource();
    蓝桥杯第三周算法竞赛D题&&E题
    【HCSD大咖直播】亲授大厂面试秘诀【云驻共创】
    【正点原子I.MX6U-MINI应用篇】1、编写第一个应用App程序helloworld
    【SA8295P 源码分析】104 - QNX 实现16G DDR 和 32G DDR RAM兼容
    [网络工程师]-应用层协议-SNMP
  • 原文地址:https://blog.csdn.net/xinyflove/article/details/126605340