wget
等实用程序可以将其下载百分比写入控制台,并在不编写新行的情况下继续更新。这个功能叫做什么,是否可以使用Symfony的控制台组件?
答案 0 :(得分:2)
如果您在主分支机构,则可以使用progress helper(docs)。
答案 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] >