2017-04-15 11 views
1

Ich habe einen Befehl für Symfony/Console, der mehrere Dateien auf einmal unter Guzzle Pool herunterlädt. Ich habe bereits Guzzle melden die download progress für jede Datei, das funktioniert gut.Symfony/Console: Wie verwenden Sie mehrere Fortschrittsbalken?

Jetzt möchte ich es mit dem ProgressBar helper von Symfony/Console verbessern. Das Problem ist, dass alle Beispiele, die ich für die ProgressBar gefunden habe, nur einen einzigen Fortschrittsbalken verwenden. Ich brauche mehrere unabhängige Fortschrittsbalken - einen für jeden der Downloads. Kannst du mir einen Hinweis geben, wie ich das erreichen kann?

Antwort

7

fand ich etwas hier: [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(); 
} 

Wirkung:

ProgressBar

Sie müssen die Konsole Cursor auf die entsprechende Zeile (oben und unten) bewegen, bevor die Bar zu aktualisieren. Aber es funktioniert. Ich bestätige.

Verwandte Themen