使用Symfony将更新值写入控制台

时间:2012-11-15 23:08:29

标签: unix symfony

wget等实用程序可以将其下载百分比写入控制台,并在不编写新行的情况下继续更新。这个功能叫做什么,是否可以使用Symfony的控制台组件?

2 个答案:

答案 0 :(得分:2)

如果您在主分支机构,则可以使用progress helperdocs)。

答案 1 :(得分:2)

我使用了1ed的答案来了解Symfony如何使用2.2中提供的进度帮助程序。十六进制字符代码“\ x08”(ANSI退格符)将删除单个字符。如果跟踪最后一行的长度,并使用str_repeat,则可以达到预期的效果。

概念证明:

<?php
$lastLineSize = 0;

for ($i = 0; $i <= 50; $i++) {
    echo str_repeat("\x08", $lastLineSize);
    echo "Iteration {$i} of 50";
    $lastLineSize = strlen("Iteration {$i} of 50");
    usleep(100000);
}

echo " - Done\n";

输出:

[root@dev /home/roguecoder] > php test.php
Iteration 50 of 50 - Done
[root@dev /home/roguecoder] >