为什么ob_flush(),flush()无法正常工作?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

为什么ob_flush(),flush()无法正常工作?

2016-06-17 15:49:13 1934 1

已查找php手册,但没有找到问题的原因。具体如下。

代码一:能正常工作的代码

<?php
set_time_limit(0);
ob_start();

$i = 1;

while (true) {
    echo str_pad(' ', 4096);
    echo $i++, '<br />';
    ob_flush();
    flush();
    sleep(1);
}
?>

代码二:不能工作的代码

<?php
set_time_limit(0);
ob_start();

echo str_pad(' ', 4096);
ob_flush();
flush();

$i = 1;

while (true) {
    echo $i++, '<br />';
    ob_flush();
    flush();
    sleep(1);
}
?>

代码二中,先输出str_pad(' ', 4096),接着再循环输出1,2,3,……,与代码一的区别仅在于代码一每次循环都需要echo str_pad(' ', 4096),为什么代码二无法正常运行。

运行环境:
win + php5.3.8

PHP
取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 19:42:57

    PHP中默认的buffer是4096kb,在output到达buffer大小前都会缓存起来,调用flush可以输出buffer中的内容到client。

    至于你说的第二个例子不起作用问题,我觉得可能是因为PHP中默认是开启了buffer的,这时候的buffer level是1,你再使用ob_start,buffer level就变为2了,现在flush的内容还是被缓冲到level为1的buffer中,而还未到达默认buffer的size,就不能间隔输出内容了。

    另外第二个地理,你可以去掉开头的ob_start调用,应该就有效果。

    0 0
相关问答

170

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 233746浏览量 回答数 170

32

回答

(原创)阿里云快速硬盘挂载教程!!!!!

梦丫头 2014-01-22 17:36:21 86547浏览量 回答数 32

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 159994浏览量 回答数 145

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 148937浏览量 回答数 22

3

回答

mySQL数据库报错You have an error in your SQL syntax

落地花开啦 2016-02-14 16:09:24 133550浏览量 回答数 3

257

回答

“零基础”系列课程--如何在ECS上快递搭建一个WordPress站点

patricia 2015-09-30 17:40:16 87418浏览量 回答数 257

251

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 310265浏览量 回答数 251

97

回答

Redhat/CentOS一键安装web环境全攻略

xiaofanqie 2011-08-11 14:51:38 125066浏览量 回答数 97

14

回答

域名解析是正确的,但是网站打不开求助!

游客b4ezpaqg54gdq 2019-07-05 11:50:33 122932浏览量 回答数 14

78

回答

【2013.9.5修正版图文】新手如何使用阿里云(linux)服务器建站(搬站)

姑苏公子 2013-04-11 00:39:13 108940浏览量 回答数 78
+关注
落地花开啦
喜欢技术,喜欢努力的人
0
文章
7824
问答
问答排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载