当前位置 博文首页 > json_li的博客:ThinkPHP5.1定时任务设置及传参

    json_li的博客:ThinkPHP5.1定时任务设置及传参

    作者:[db:作者] 时间:2021-08-25 15:53

    ??????????????????????? ThinkPHP5.1定时任务设置及传参

    ?

    1.在相关模块中创建command文件夹,与controller/model/view目录同级

    ?2.在command中创建任务文件

    <?php
    
    namespace app\index\command;
    
    
    use think\console\Command;
    use think\console\Input;
    use think\console\Output;
    
    class CronImage extends Command
    {
        protected function configure()
        {
            //setName与文件名称保持一致 setDEscription则是说明
            $this->setName('CronImage')->setDescription("设置图片表测试数据");
        }
    
        /**
         * 业务逻辑
         * @param Input $input
         * @param Output $output
         * @return int|void|null
         */
        protected function execute(Input $input, Output $output)
        {
            
        }
    }

    3.在command.php中添加你所创建的任务文件的路径

    ?4.命令行中执行

    任务文件中修改执行方法

        /**
         * 业务逻辑
         * @param Input $input
         * @param Output $output
         * @return int|void|null
         */
        protected function execute(Input $input, Output $output)
        {
            $output->writeln('type value');
            echo 1111;
        }

    然后命令行 执行以下命令

    php think CronImage

    输出:

    5.设置参数及获取参数(当同一个任务文件执行多个不同任务时)

    <?php
    
    namespace app\index\command;
    
    
    use think\console\Command;
    use think\console\Input;
    use think\console\input\Argument;
    use think\console\Output;
    
    class CronImage extends Command
    {
        protected function configure()
        {
            $this->addArgument('type', Argument::REQUIRED); //必传参数
            //$this->addArgument('type', Argument::OPTIONAL);//可选参数
            $this->setName('CronImage')->setDescription("设置图片表测试数据");//setName与文件名称保持一致 setDEscription则是说明
        }
    
        /**
         * 业务逻辑
         * @param Input $input
         * @param Output $output
         * @return int|void|null
         */
        protected function execute(Input $input, Output $output)
        {
            $output->writeln('type value');
            $type = $input->getArgument('type');
            switch($type)
            {
                case 1:
                    echo 1;
                    break;
                case 2:
                    echo '2-';
                    break;
            }
        }
    }

    执行:

    输出为不同的内容,可用来执行不同的业务逻辑,本文章到此已经结束!

    cs