我希望能够在命令行上以简单的 PHP 脚本显示进度表。而不是看到
Progress: 0%
Progress: 1%
etc...
我只想更改数字,并替换以前的数字,就像 git clone 一样Resolving deltas: 100% (8522/8522), done.
。
在搜索这个时,我发现在 Perl 中回答了同样的问题,这是完美的,但我在 PHP 中找不到它。是否可以?如果没有,我将求助于 C。
谢谢
更新:如果有人对 C++ 版本感兴趣,请点击此处。
我希望能够在命令行上以简单的 PHP 脚本显示进度表。而不是看到
Progress: 0%
Progress: 1%
etc...
我只想更改数字,并替换以前的数字,就像 git clone 一样Resolving deltas: 100% (8522/8522), done.
。
在搜索这个时,我发现在 Perl 中回答了同样的问题,这是完美的,但我在 PHP 中找不到它。是否可以?如果没有,我将求助于 C。
谢谢
更新:如果有人对 C++ 版本感兴趣,请点击此处。
这可以使用ANSI 转义序列来完成——请参见此处的列表。
在 PHP 中,您将在该页面上"\033"
指示时使用ESC
。
在你的情况下,你可以使用这样的东西:
echo "Progress : "; // 5 characters of padding at the end
for ($i=0 ; $i<=100 ; $i++) {
echo "\033[5D"; // Move 5 characters backward
echo str_pad($i, 3, ' ', STR_PAD_LEFT) . " %"; // Output is always 5 characters long
sleep(1); // wait for a while, so we see the animation
}
我简化了一点,确保我总是有 5 个额外的字符,并且总是显示相同数量的数据,总是向后移动相同数量的字符......
但是,当然,如果需要,您应该能够做更复杂的事情;-)
还有许多其他有趣的转义序列:例如,颜色可以大大增强您的输出;-)
只是为了记录一个旧线程:我没有使用花哨的 ANSI Escape 序列将光标移回,而是使用“\r”将其移回行首,而不是下一行的开头“\n” . 在您的回声后添加几个空格以覆盖以前存在的任何内容,例如:
for ($i=0 ; $i<=100 ; $i++) {
echo "Progress: $i % \r";
sleep(1);
}