我有一个在 CLI 中运行的 php 脚本,我想显示当前的百分比进度,所以我想知道是否可以更新 STDOUT 以显示新的百分比。
当我使用 rewind() 或 fseek() 时,它只会抛出一条错误消息。
我有一个在 CLI 中运行的 php 脚本,我想显示当前的百分比进度,所以我想知道是否可以更新 STDOUT 以显示新的百分比。
当我使用 rewind() 或 fseek() 时,它只会抛出一条错误消息。
请参阅此代码:
<?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);
}
输出\r
然后刷新以返回到当前行的第一列。
如果您想在输出栅格中向后移动或执行添加颜色之类的操作,那么写入控制台/终端会非常复杂 - 并且行为会因您使用的控制台/终端类型而异。很久以前,有些人提出了构建终端的抽象表示并将其写入的想法。
有关如何在 PHP 中执行此操作的详细信息,请参阅本文。