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

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 4378|回复: 12

急,Header设置content-type!

[复制链接]
发表于 2013-6-4 15:23:10 | 显示全部楼层 |阅读模式
我想问下各位,比如我有一个功能需要PHP设置conent-type:text/event-stream.这个php是设置成控制器还是单独的一个php文件放在其他目录访问如lib。急!我用控制器的话设置content-type貌似没用,希望看到的人帮忙解决下,有点儿急谢谢
发表于 2013-6-4 16:42:47 | 显示全部楼层
在header前面加上 ob_clean();

另:请把问题写清楚,“貌似没用”是什么意思?
 楼主| 发表于 2013-6-4 17:56:46 | 显示全部楼层
就是如果是控制器的话调用的index方法在里面设置header也是可以得吗,还有这种类似的文件一般用于ajax调用的文件不会写成控制器吧,还是单独写PHP文件就OK了呢
谢谢!
发表于 2013-6-4 20:23:15 | 显示全部楼层
单入口程序,都是写控制器的。而且设置header是没有问题的,除非你的程序在header之前有输出,比如说空格或者BOM之类的,header才会失效。
 楼主| 发表于 2013-6-5 00:45:30 | 显示全部楼层
嗯,解决了多谢!不是框架问题,html5 eventsource的问题哈哈多谢提醒
发表于 2017-10-4 22:43:57 | 显示全部楼层

RE: 急,Header设置content-type!

S3P 发表于 2013-6-5 00:45
嗯,解决了多谢!不是框架问题,html5 eventsource的问题哈哈多谢提醒

楼主怎么解决的?遇到同样问题,请告知,谢谢!

jack老大,请指教:
客户端js使用EventSource,如果把下面的代码放在框架的控制器内部,代码执行总是挂起(pending)。同样的代码,如果放在单独的php文件里面,不使用框架,则可以正常flush()输出内容,好像是内容被缓存了,flush()不起作用,无法输出内容?请指教!
2017-10-04_222053.jpg
代码在附件中,请查看!
2017-10-04_222053.jpg

问题描述.zip

1.03 KB, 下载次数: 1

发表于 2017-10-4 22:46:22 | 显示全部楼层
istony 发表于 2017-10-4 22:43
楼主怎么解决的?遇到同样问题,请告知,谢谢!

jack老大,请指教:

补充一下,SpeedPHP版本是3.1.89
发表于 2017-10-4 22:47:27 | 显示全部楼层
istony 发表于 2017-10-4 22:43
楼主怎么解决的?遇到同样问题,请告知,谢谢!

jack老大,请指教:

补充一下,Speed版本是3.1.89
发表于 2017-10-5 00:23:03 | 显示全部楼层
istony 发表于 2017-10-4 22:43
楼主怎么解决的?遇到同样问题,请告知,谢谢!

jack老大,请指教:

按专业前端给的意见,这请求后加上一个随机时间戳参数,即可避免浏览器缓存。
发表于 2017-10-5 02:16:55 | 显示全部楼层
解决了,谢谢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次缓冲区,运行正常




您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

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

GMT+8, 2019-11-22 00:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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