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

如果目标用户正在使用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|隐藏机器人聊天)
添加新回复
回复需要登录