8

我有一个在 CLI 中运行的 php 脚本,我想显示当前的百分比进度,所以我想知道是否可以更新 STDOUT 以显示新的百分比。

当我使用 rewind() 或 fseek() 时,它只会抛出一条错误消息。

4

3 回答 3

8

请参阅此代码:

<?php
echo "1";
echo chr(8);
echo "2";

输出只有 2,因为“chr(8)”是“退格”的字符。

因此,只需打印您需要返回并打印新百分比的字符数量。

打印 "\r" 在 Linux 和 Windows 上也可以工作,但不会在 Mac 上完成

工作示例:

echo "Done: ";
$string = "";
for($i = 0; $i < 100; ++$i) {
    echo str_repeat(chr(8), strlen($string));
    $string = $i."%";
    echo $string;
    sleep(1);
}
于 2010-03-05T15:19:28.590 回答
4

输出\r然后刷新以返回到当前行的第一列。

于 2010-03-05T15:00:14.187 回答
-1

如果您想在输出栅格中向后移动或执行添加颜色之类的操作,那么写入控制台/终端会非常复杂 - 并且行为会因您使用的控制台/终端类型而异。很久以前,有些人提出了构建终端的抽象表示并将其写入的想法。

有关如何在 PHP 中执行此操作的详细信息,请参阅本文。

于 2010-03-05T15:13:43.750 回答