已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 教程

标题: 用php输出一个Q浏不会接收数据超时的xhtml页

作者: @Ta

时间: 2011-07-04

点击: 3568

如果目标用户正在使用mrpQQ浏览器,而且使用CMNET接入点,用php输出xhtml内容将是一个麻烦的问题。如果弄得不好,结果就是Q浏会“接收数据”长达两分钟,即使数据早已接收完。
所以,我写了这个例程:
<?php
function 输出头信息($内容)
{
header('Content-Type: application/xhtml+xml; charset=utf-8');
header('Content-Length: '.strlen($内容));
return $内容;
}
ob_start('输出头信息'); //打开输出缓冲区。它使所有原本正常输出的内容被缓存,只到最后经过指定的函数(这里是“输出头信息”)处理后再输出
echo '<?xml version="1.0" encoding="utf-8">';
?>
<!DTD……>
<html>
<head><title>测试网页</title></head>
<body>
百度贴吧说:发贴要满十五字哦。
</body>
</html>
完了。
整个执行过程如下:
ob_start打开缓冲,所有正常输出被写入缓冲,此时没有任何东西被输出到浏览器。
所有输出都结束后,输出头信息()函数被调用,参数 $内容 就是这所有的输出。
输出文件头()利用参数 $内容 得到Content-Length信息被输出给浏览器,并把内容不做任何处理直接返回(如果要gzip压缩,也是在这一步进行的)
php得到函数的返回值,并把它输出到浏览器。
必须保证文件没有BOM,否则php将一开始就输出默认的文件头,这将导致Content-Length无法送出,Q浏仍然超时。
通常,我们把function 输出文件头() 和ob_start()调用都放进一个文件里,要用时直接include就可以了。
我的直接输出固定Content-type的方法并不好,IE访问会提示下载,建议采用hu60wap中mime.php里面的方法。

[隐藏样式|查看源码]


『回复列表(6|隐藏机器人聊天)』

1. 没了?
(/@Ta/2011-07-04 12:47//)

2. 等
(/@Ta/2011-07-04 12:47//)

3. 快啊快啊,我滴网站就是这样子滴
egg203.iiaq.com
(/@Ta/2011-07-04 12:54//)

4. 夷?那么meta那个还要不?
(/@Ta/2011-07-04 12:57//)

5. 保留你的meta
我懒得写
(/@Ta/2011-07-04 13:04//)

6. 3楼,你修改过程中肯定在某处被加了BOM。
或者你乱改了。
或者你没有用[html=标题][/html]等UBB方案
hu60wap-0wap的模板已经做好了所有的头信息输出,当然,前提是你使用UBB。
(/@Ta/2011-07-04 13:12//)

回复需要登录

7月12日 12:22 星期六

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1