php – Symfony / Console:如何使用多个进度条?

我有一个Symfony / Console的命令,它使用Guzzle Pool一次下载几个文件.我已经有Guzzle报告每个文件的download progress,这很好.

现在我想使用Symfony / Console的ProgressBar helper来改进它.问题是我为ProgressBar找到的所有示例都只使用一个进度条.我需要几个独立的进度条 – 每个下载一个.你能给我一些提示如何实现吗?

解决方法:

我在这里找到了一些东西:[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();
}

影响:

在更新栏之前,必须将控制台光标移动到相应的行(向上和向下).但它的确有效.我确定.

上一篇:php – Laravel – Guzzle请求/ cURL错误6:无法解析主机


下一篇:php – Behat:Goutte / Guzzle通过cURL下载文件“警告:curl_setopt_array():3607不是有效的文件句柄资源”