在 PHP 中寻找 STDOUT
我有一个在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
请参阅以下代码:
输出仅为 2,因为“chr(8)”是“退格”的字符。
因此,只需打印您需要返回的字符数并打印新的百分比即可。
打印“\r”在 Linux 和 Windows 上也可以工作,但不会在 Mac 上减少
工作示例:
See this code:
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:
输出
\r
然后刷新以返回到当前行的第一列。Output
\r
and then flush to get back to the first column of the current line.如果您想在输出栅格中向后移动或执行添加颜色等操作,则写入控制台/终端会非常复杂 - 并且行为会根据您使用的控制台/终端类型而有所不同。很久以前,有人提出了构建终端的抽象表示并向其写入的想法。
有关如何在 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.