Artisan的一个小问题

我的一个命令如果要定时运行,但是命令里面需要交互,输入5,这个该怎么写呢

Artisan的一个小问题

chowjiawei
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
chowjiawei
最佳答案

只能从命令代码开始改造了 给命令加个可选参数

 protected $signature = 'main {--key= :  步骤}';

判断是否有可选参数并等于特定值5,有的话,直接运行,否则开始选择

public function handle()
    {
//        $this->productionCheckHint();


        $exit = 'no';
        do {
            $k = $this->option('key');
            if ($k && $k == 5) {
                $option = '网站健康检查';
            } else {
                $option = $this->choice('请选择功能', [
                    '清除系统缓存',
                    '新建商城用户/修改商城用户',
                    '业务通知',
                    '网站维护(关闭网站)',
                    '网站维护(开启网站)',
                    '网站健康检查',
                    '创建Rest风格资源控制器',
                    '上线网站初始化(仅供使用一次,重复使用将导致您的数据全部丢失)',
                    '测试环境一键部署',
                    '备份数据库',
                ]);
            }
            $this->line('正在为您链接 ' . $option);
            switch ($option) {
                case '清除系统缓存':
                    Artisan::call('optimize:clear');
                    $message = '系统缓存已经清除!';
                    break;
2年前 评论
讨论数量: 4

新建一个命令去执行对应任务

2年前 评论
chowjiawei (楼主) 2年前
2年前 评论
chowjiawei (楼主) 2年前
chowjiawei

只能从命令代码开始改造了 给命令加个可选参数

 protected $signature = 'main {--key= :  步骤}';

判断是否有可选参数并等于特定值5,有的话,直接运行,否则开始选择

public function handle()
    {
//        $this->productionCheckHint();


        $exit = 'no';
        do {
            $k = $this->option('key');
            if ($k && $k == 5) {
                $option = '网站健康检查';
            } else {
                $option = $this->choice('请选择功能', [
                    '清除系统缓存',
                    '新建商城用户/修改商城用户',
                    '业务通知',
                    '网站维护(关闭网站)',
                    '网站维护(开启网站)',
                    '网站健康检查',
                    '创建Rest风格资源控制器',
                    '上线网站初始化(仅供使用一次,重复使用将导致您的数据全部丢失)',
                    '测试环境一键部署',
                    '备份数据库',
                ]);
            }
            $this->line('正在为您链接 ' . $option);
            switch ($option) {
                case '清除系统缓存':
                    Artisan::call('optimize:clear');
                    $message = '系统缓存已经清除!';
                    break;
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!