Artisan 命令列 2種實現方式

chowjiawei發表於2021-09-29

使用方法一,發現有多少個進度就有多少個顯示,感覺有點奇怪,找了第二種,感覺更舒服些

方法一

public function handle()
    {
        $page = $this->argument('page') ?? 3;
        $this->output->progressStart(100);
        for ($i = 1; $i <= $page; $i++) {
            $this->comment('正在快取' . $i . '頁');
           //邏輯

            $this->output->info($i . '頁' . '快取完畢');

            if ($i == 3) {
                $this->output->progressAdvance(34);
            } else {
                $this->output->progressAdvance(33);
            }
        }
        $this->output->progressFinish();
        $this->output->success('已經生成前三頁快取');

    }

效果: 多個進度會有多個最新的進度條
Artisan 命令列  2種實現方式

方法二

public function handle()
    {
        $page = $this->argument('page') ?? 3;
        $bar = $this->output->createProgressBar($page);
        $bar->setBarCharacter('<comment>=</comment>');
        $bar->setEmptyBarCharacter(' ');
        $bar->setProgressCharacter('|');
        $bar->setBarWidth(50);

        for ($i = 1; $i <= $page; $i++) {

            $bar->advance();
            //業務邏輯

            $this->output->success('已經生成前' . $page . '頁快取');
        }
    }

效果: 會使用1個命令列實時更新進度

Artisan 命令列  2種實現方式

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章