Laravelのコンソールでプログレスバーを利用してみます。
プログレスバーは以下のように利用します。
今回は、単純にループを回してみます。
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
// 基準を設定する(今回は5回ループさせるので、5)。
$bar = $this->output->createProgressBar(5);
foreach (range(1, 5) as $i) {
// プログレスバーを処理に応じて進める。
$bar->advance();
}
// プログレスバーを終了する。
$bar->finish();
}
-------出力サンプル--------
5/5 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
処理中でコンソール出力を行うと、複数行表示されます。
以下は、単純にバーの前に数値を出力してみたものです。
1
1/5 [▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░] 20%
2
2/5 [▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░] 40%
3
3/5 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░] 60%
4
4/5 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░] 80%
5
5/5 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
また、以下のように出力フォーマットもある程度設定できます。
$bar = $this->output->createProgressBar(5);
// 出力フォーマットを設定する。
$bar->setFormat('%bar% %current:3s%%/%max:3s%% %memory:6s%');
// プログレスバーを処理に応じて進める。
foreach (range(1, 5) as $i) {
$bar->advance();
}
// プログレスバーを終了する。
$bar->finish();
-------出力サンプル--------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 5%/ 5% 10.0 MiB