企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 命令行:命令行进度条 对于耗时任务,有进度条提示,用户体验会好很多。 下面,我们创建一个演示进度条基本用法的`demo:processbar`命令,源码如下: ~~~php Artisan::command('demo:processbar {--custom}', function ($custom) { $bar = $this->output->createProgressBar(10); if ($custom) { $bar->setBarCharacter('<comment>=</comment>'); $bar->setEmptyBarCharacter(' '); $bar->setProgressCharacter('|'); $bar->setBarWidth(50); } $i = 0; do { sleep(1); $bar->advance(); } while (++$i < 10); $bar->finish(); }); ~~~ 首先,我们用`output`对象创建一个进度条对象,创建的同时指定进度条的总步长。 ~~~php $bar = $this->output->createProgressBar(10); ~~~ 然后,可以对进度条进行定制,比如上面的命令在指定`--custom`选项后,会进行下列定制: 设置进度条已完成部分的字符(黄色`=`号): ~~~php $bar->setBarCharacter('<comment>=</comment>'); ~~~ 设置进度条未完成部分字符(空格字符): ~~~php $bar->setEmptyBarCharacter(' '); ~~~ 设置进度指示字符: ~~~php $bar->setProgressCharacter('|'); ~~~ 设置进度条宽度: ~~~php $bar->setBarWidth(50); ~~~ 更多定制项,请见[Symfony 进度条组件文档](https://symfony.com/doc/current/components/console/helpers/progressbar.html)。 然后,在命令执行过程中,更新进度条进度: ~~~php $bar->advance(); ~~~ 最后,任务执行完毕后,设置进度条完结。 ~~~php $bar->finish(); ~~~ 效果: [![命令行进度条](https://cdn.learnku.com/uploads/images/201905/27/7636/9GAW6R96Uj.gif!large)