2017-04-15 2 views
1

私はsymfony/Console用のコマンドを持っています。これは、Guzzle Poolを使って一度にいくつかのファイルをダウンロードします。私はすでにGuzzleが各ファイルのためにdownload progressを報告していますが、それはうまくいきます。Symfony/Console:複数のプログレスバーを使用するには?

symfony/ConsoleからProgressBar helperを使用して改善したいと思います。問題は、ProgressBarで見つかったすべての例で1つのプログレスバーしか使用できないことです。私はいくつかの独立したプログレスバーが必要です - ダウンロードごとに1つ。あなたはそれを達成するためのヒントを教えてもらえますか?

答えて

7

私はここで何かを見つけた:[Console] A better progress bar #10356

use Symfony\Component\Console\Helper\ProgressBar; 
use Symfony\Component\Console\Output\ConsoleOutput; 

$output = new ConsoleOutput(); 

$bar1 = new ProgressBar($output, 10); 
$bar2 = new ProgressBar($output, 20); 
$bar2->setProgressCharacter('#'); 
$bar1->start(); 
print "\n"; 
$bar2->start(); 

for ($i = 1; $i <= 20; $i++) { 
    // up one line 
    $output->write("\033[1A"); 
    usleep(100000); 
    if ($i <= 10) { 
     $bar1->advance(); 
    } 
    print "\n"; 
    $bar2->advance(); 
} 

効果:

ProgressBar

をあなたがバーを更新する前に、適切なライン(上下)へのコンソールカーソルを移動する必要があります。しかし、それは動作します。私が確認する。

関連する問題