开发者社区> 问答> 正文

从PHP官方手册拷贝下来一段关于缓冲的代码,但是执行结果却是错的,为什么?

我从PHP官方手册拷贝下来一段关于缓冲的代码,但是执行结果却是错的,求解!
我拷贝代码的地址是:http://fr2.php.net/manual/zh/function.ob-flush.php#109314

我的代码如下,执行后不是逐行显示,而是等了很长时间后,一起出现出来:

header('Content-type:text/html; charset=utf-8');
if (ob_get_level() == 0) ob_start();

for ($i = 0; $i<10; $i++){

    echo "<br> Line to show.";
    echo str_pad(' ',4096)."\n";

    ob_flush();
    flush();
    sleep(2);
}

echo "Done.";

ob_end_flush();

OS:Mac osx 10.9
webservice: nginx 1.4
php: 5.6

展开
收起
落地花开啦 2016-06-16 17:49:47 2161 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    注意flush和ob_flush的区别:
    ob_flush 操作的是php本身的buffer
    flush 操作的是 apache 的 flush,也就是说这个对 nginx是无效果的

    nginx下要如下设置试一下:

    `fastcgi_max_temp_file_size 0 #禁止磁盘缓冲
    fastcgi_buffers 1 1k #把buffer设小`

    2019-07-17 19:41:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载