首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用flush()回显MAMP上的进度

如何使用flush()回显MAMP上的进度
EN

Stack Overflow用户
提问于 2012-04-14 00:33:50
回答 2查看 1.1K关注 0票数 0

我正在尝试在MAMP上运行一个简单的PHP脚本。我使用的是PHP 5.2.17,并且关闭了压缩。我正在尝试执行这个简单的脚本

代码语言:javascript
运行
复制
<?php
    ob_flush();
    foreach(range(1,9) as $n){
    echo $n."\n";
    flush();
    sleep(1);
}

由于中小企业的原因,这不是它应该做的事情。它不是顺序地回显数字,而是在循环完成时简单地回显它们。我是不是遗漏了什么?有没有其他方法可以做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-14 00:56:45

输出缓冲是一种机制,用于控制在将数据推送到客户端之前,PHP应在内部保留多少输出数据(不包括头部和cookie)。如果应用程序的输出超过此设置,PHP将按您指定的大小分块发送数据。启用此设置并管理其最大缓冲区大小可能会产生一些有趣的副作用,具体取决于您的应用程序和web服务器。在通过print或echo发送输出之后,您可以发送标头和cookie。如果您的服务器由于缓冲输出而发出更少的数据包,那么与PHP流式传输输出相比,您还可以看到性能上的好处。在生产服务器上,出于性能原因,4096字节是一个很好的设置。

注意:输出缓冲也可以通过输出缓冲控制函数来控制。

php.ini可能的值:

代码语言:javascript
运行
复制
On = Enabled and buffer is unlimited. (Use with caution) 
Off = Disabled    
Integer = Enables the buffer and sets its maximum size in bytes.  
eg: output_buffering = Off

注意:对于CLI SAPI,此指令已硬编码为Off

http://php.net/output-buffering

将output_buffering设置为4096时的工作示例

代码语言:javascript
运行
复制
<?php
ob_start();
// Output string to overflow browser php.ini output_buffering setting.
echo str_repeat(PHP_EOL, 4097);

for ($i=0; $i<5; $i++) {
  echo PHP_EOL.$i;
  ob_flush();
  flush();
  sleep(1);
}
ob_end_flush();
?>
票数 1
EN

Stack Overflow用户

发布于 2012-04-14 00:37:26

实际上,它是缓冲区大小

PHP buffer why \r\n

这个例子对我很有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10144780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档