前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Thinkphp5下command命令总结,最详细笔记

Thinkphp5下command命令总结,最详细笔记

作者头像
程序猿的栖息地
发布2022-04-29 14:41:05
1.1K0
发布2022-04-29 14:41:05
举报
文章被收录于专栏:程序猿的栖息地

php think 查看可用命令

代码语言:javascript
复制
[root@root root] # php think clear 
Clear Successed
[root@root root] # php think clear config
Clear Successed
[root@root root] # php think clear view
Clear Successed
[root@root root] # php think clear cache
Clear Successed
[root@root root] # php think clear db
Clear Successed
[root@root root] # php think clear log
Clear Successed
[root@root root] # php think command

application下command.php文件返回数组里新增一条:

代码语言:javascript
复制
return [ 
    'app\admin\command\Test', #测试
]; 

application\admin\command下test文件:

代码语言:javascript
复制
<?php
namespace app\admin\command;

use think\console\Command;
use think\Console;
use think\console\Output;
use think\console\Input;
use think\console\Input\Argument;
use think\console\Input\Option;
/*
 * 带参数脚本兼容linux定时和手动执行
*/
class Test extends Command
{

    //定义任务名和描述
    protected function configure(){
        //设置参数
        $this->addArgument('id',Argument::REQUIRED,'ID必填'); //必传参数
        $this->addArgument('name', Argument::OPTIONAL,'NAME选填');//可选参数
        //选项定义
        $this->addOption('type', 't', Option::VALUE_REQUIRED,'TYPE必填',0); //选项值必填
        $this->addOption('status', 's', Option::VALUE_OPTIONAL,'STATUS选填',1); //选项值选填

        $this->setName('test')->setDescription("php think test 测试"); //选项定义 
    }

    //调用该类时,会自动运行execute方法
    protected function execute(Input $input, Output $output){
        set_time_limit(0);
        @ob_end_clean();
        @ob_implicit_flush(1);
        ini_set('memory_limit','100M');
        # echo substr_replace('18858281234','****',3,4);
        header("Content-type: text/html; charset=utf-8");
        date_default_timezone_set('Asia/Shanghai');

            $excel_id = Cache::get('excel_id');
            if(!empty($excel_id)){ //如果缓存有值,用定时脚本执行
                  $id = $excel_id;
             }else{//如果使用命令行手动传参执行
                $args = $input->getArguments();//获取传参数组
                print_r($args);                  
                $options = $input->getOptions(); //获取选项数组
                print_r($options);
                $output->writeln("参数接收为:".$args['id'].'--'.$args['name']);
                //接收用全称name,不能简写shortcut
                $output->writeln("选项接收为:".$options['type'].'--'.$options['status']);
            }
        
    
        $page = 0;  
       while(true){
           $page++;
           $res = $model->where(['id'=>$id])->paginate(100, false, [ 'page' => $page, 'query' => $query ]); //获取订单数据
           $res = json_decode($res,true);
           if( empty($res['data']['body'])){//分页获取数据为空,则说明执行完毕
               exit("已同步完成\n\r");//退出
           }
            
          //数据不为空,循环遍历插入本地数据库
           foreach($res['data']['body'] as $k=>$v){
               $data['product_id'] = $v['product_id'];
               $data['order_status'] = $status;
               Db::table(Config('database.prefix').'table')->insert($data);

           }
           echo "同步第{$page}页完成\n\r"; //输出
       } 
    }
 }

不带参数调用

代码语言:javascript
复制
php think command

参数Arguments调用(只传值,用空格隔开;必传在前,选填在后)

代码语言:javascript
复制
php think command  args1 argsN..

选项Options调用(简称传参,全称接收;全称name和value中间有空格,简称空格可有可无)

代码语言:javascript
复制
php think  command   --name1  "value1"  --nameN  "valueN"
php think  command  -n1  "value1"  -nN  "valueN"

参数Arguments和选项Options混合调用(参数和选项传递顺序不分)

代码语言:javascript
复制
php think  command   args1 argsN...  --name1  "value1"  --nameN  "valueN"  
php think  command   --name1  "value1"  --nameN  "valueN"  args1 argsN...

php think  command  args1 argsN...  -n1  "value1"  -nN  "valueN"  args1 argsN...
php think  command  -n1  "value1"  -nN  "valueN"  args1 argsN...

arguments和options混合调用demo:

代码语言:javascript
复制
#四种调用结果相同 
[root@root root]# php think test 1 admin --type "2" --status "3"
[root@root root]# php think test --type "2" --status "3"  1  admin 
[root@root root]# php think test 1 admin -t"2" -s"3"
[root@root root]# php think test -t"2" -s"3" 1 admin
Array
(
    [command] => test
    [id] => 1
    [name] => admin
)
Array
(
    [type] => 2
    [status] => 3
    [help] => 
    [version] => 
    [quiet] => 
    [verbose] => 
    [ansi] => 
    [no-ansi] => 
    [no-interaction] => 
)
参数接收为:1--admin
选项接收为:2--3
[root@root root]# 

代码调用

代码语言:javascript
复制
 use think\Console;#引入Console
   
 $output = Console::call('command');#无参数调用
 $output = Console::call('command',[args1,args2,argsN...]);#带参数调用命令 
 $output = Console::call('test',['1','admin','-t2','-s3']);#带参数调用(options和arguments不区分顺序)
return $output->fetch();    #获取输出信息
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序猿的栖息地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档