请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: S3P

急,Header设置content-type!

[复制链接]
发表于 2017-10-5 02:24:20 | 显示全部楼层
istony 发表于 2017-10-5 02:16
解决了,谢谢jake!

不过问题还是出在 ob_fush()这里:查看SpeedPHP手册,看到由于sp框架默认开启了ob_sta ...

解决了,谢谢jake!

不过问题还是出在 ob_fush()这里:查看SpeedPHP手册,看到由于sp框架默认开启了ob_start,
  1. 'auto_ob_start' =>TRUE,//是否自动开启缓存输出控制,默认值:TRUE,其作用相当于ob_start()
复制代码
但是,在代码里面写入了一行 ob_flush();仍然无效,又查询php手册发现ob_start(),可以嵌套调用,下面是php官网的原话:
输出缓冲区是可堆叠的,这即意谓着,当有一个 ob_start() 是活跃的时, 你可以调用另一个 ob_start() 。 只要确保又正确调用了 ob_end_flush() 恰当的次数即可。 如果有多重输出回调函数是活跃的,输出内容会一直按嵌套的顺序依次通过它们而被过滤。
猜想可能堆叠调用了,使用函数:ob_get_level()果然“返回输出缓冲机制的嵌套级别为2”,将代码改为如下,关闭2次缓冲区,运行正常

2017-10-05_021800.jpg

发表于 2017-10-5 14:21:52 | 显示全部楼层
istony 发表于 2017-10-5 02:24
解决了,谢谢jake!

不过问题还是出在 ob_fush()这里:查看SpeedPHP手册,看到由于sp框架默认开启了ob_s ...

其实问题并非ob相关函数,而是服务器配置的缓存区,一般HTTP服务器会缓存输出1k数据的,我们做持续输出的时候,如果要刷出小量数据,要给输出补齐1K数据,这是最稳妥的方法,可以百度看看这个的解决方案。记得好像是用pack函数什么的,忘记了。

你的解决方案是关闭系统缓冲区,这样不太好。

3.1版框架有配置可以关闭ob_start的,不过跟这个问题无关,因为服务器自带有缓冲区,ob函数只是对缓冲区的部分控制。
发表于 2017-10-5 14:57:26 | 显示全部楼层
jake 发表于 2017-10-5 14:21
其实问题并非ob相关函数,而是服务器配置的缓存区,一般HTTP服务器会缓存输出1k数据的,我们做持续输出的 ...

好,我根据你的信息,再百度找下相关信息,调试一下,辛苦喽
您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2019-11-20 11:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表