在 PHP 中寻找 STDOUT

发布于 2024-08-24 18:19:06 字数 118 浏览 7 评论 0原文

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

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

I have a php script that is running in CLI and I want to display the current percent progress so I was wondering if it is possible to update the STDOUT to display the new percent.

When I use rewind() or fseek() it just throws an error message.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

忆伤 2024-08-31 18:19:06

请参阅以下代码:

<?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);
}

See this code:

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

The output is only 2 since "chr(8)" is the char for "backspace".

So just print the amount of chars you need to go back and print the new percentage.

Printing "\r" works too on Linux and Windows but isn't going to cut it on a mac

Working example:

echo "Done: ";
$string = "";
for($i = 0; $i < 100; ++$i) {
    echo str_repeat(chr(8), strlen($string));
    $string = $i."%";
    echo $string;
    sleep(1);
}
撕心裂肺的伤痛 2024-08-31 18:19:06

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

Output \r and then flush to get back to the first column of the current line.

明月夜 2024-08-31 18:19:06

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

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

Writing to a console/terminal is surprisingly complex if you want to move backwards in the output raster or do things like add colours - and the behaviour will vary depending on the type of console/terminal you are using. A long time ago some people came up with the idea of building an abstract representation of a terminal and writing to that.

See this article for details of how to do that in PHP.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文