S3P 发表于 2013-6-4 15:23:10

急,Header设置content-type!

我想问下各位,比如我有一个功能需要PHP设置conent-type:text/event-stream.这个php是设置成控制器还是单独的一个php文件放在其他目录访问如lib。急!我用控制器的话设置content-type貌似没用,希望看到的人帮忙解决下,有点儿急谢谢

jake 发表于 2013-6-4 16:42:47

在header前面加上 ob_clean();

另:请把问题写清楚,“貌似没用”是什么意思?

S3P 发表于 2013-6-4 17:56:46

就是如果是控制器的话调用的index方法在里面设置header也是可以得吗,还有这种类似的文件一般用于ajax调用的文件不会写成控制器吧,还是单独写PHP文件就OK了呢
谢谢!

jake 发表于 2013-6-4 20:23:15

单入口程序,都是写控制器的。而且设置header是没有问题的,除非你的程序在header之前有输出,比如说空格或者BOM之类的,header才会失效。

S3P 发表于 2013-6-5 00:45:30

嗯,解决了多谢!不是框架问题,html5 eventsource的问题哈哈多谢提醒

istony 发表于 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()不起作用,无法输出内容?请指教!:handshake

代码在附件中,请查看!

istony 发表于 2017-10-4 22:46:22

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

jack老大,请指教:


补充一下,SpeedPHP版本是3.1.89

istony 发表于 2017-10-4 22:47:27

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

jack老大,请指教:


补充一下,Speed版本是3.1.89

jake 发表于 2017-10-5 00:23:03

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

jack老大,请指教:


按专业前端给的意见,这请求后加上一个随机时间戳参数,即可避免浏览器缓存。

istony 发表于 2017-10-5 02:16:55

解决了,谢谢jake!

不过问题还是出在 ob_fush()这里:查看SpeedPHP手册,看到由于sp框架默认开启了ob_start,'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次缓冲区,运行正常




页: [1] 2
查看完整版本: 急,Header设置content-type!