• 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 这么写就行哈,可自行查找

    保存退出即可。

  • 相关阅读:
    java基于springboot的火车高铁购票系统
    vue看项目文件判断配置方法
    StreamBuilder 用法示例
    【PTA-训练day4】L2-015 互评成绩 + L1-011 A-B
    【kafka】九、kafka消费者分区分配策略
    为什么个人IP对任何行业都至关重要
    【JS函数】JS函数之防抖、节流函数
    amber教程5.3:带非标准残基的绿色荧光蛋白的MD
    Mybatis练习之表白墙练习
    Nginx【反向代理负载均衡动静分离】--中
  • 原文地址:https://blog.csdn.net/xinyflove/article/details/126605340