我有以下代码来打印"." 每秒钟模拟一个进度条.
$num = 15;
while($num--){
sleep(1);
print ".";
}
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是"." 每个循环后不打印字符.相反,所有15"." 在循环退出后立即打印.但是,如果我打印".\n",它可以正常工作.但是"." 每次都会打印出一条新线,这不是我想要的.
这看起来很奇怪,无法弄清楚原因.有人可以提供一些帮助吗?谢谢.
问候,艾伦
Mat*_*Mat 21
这可能是因为I/O正在被缓冲.尝试禁用缓冲(autoflush):
$| = 1;
Run Code Online (Sandbox Code Playgroud)
循环之前.
有关更完整的说明,请参阅如何刷新/取消缓冲输出文件句柄?我为什么要这样做?