HTTP之分块传输

来源:互联网 发布:软件行业的职业规划 编辑:程序博客网 时间:2024/06/05 05:57

该文档仅供初学者参考使用。另外,对于反向Ajax这方面的内容我了解的也不是十分的深刻。以后会深入了解这方面的内容。


/**
HTTP协议 持久链接 + 分块传输 ==> 反向Ajax
**/


名称:反向Ajax,又叫做coment或者server push服务推技术
应用范围:网页聊天服务器、新浪微博在线聊天、google mail网页聊天 等等
原理:一般情况下,HTTP协议的特点 ==> 连接<-->断开
当服务器响应了content-length,收到指定的length长度的内容之后,连接就断开了


在http 1.1协议中,允许不写content-length ,比如不知道要发送的内容长度的时候,


这是需要一个特殊的content-type:chunked ==> chunk 块


分块传输的原理是:
123H\r\n 
123H个长度的内容传输给客户端..\r\n 
....
41H\r\n 
41H个长度的内容传输给客户端,客户端接着接受..\r\n 
...
0\r\n(服务器表示内容发完了)


set_time_limit(0);
ob_start();


$pad = str_repeat(' ', 4000);
$i = 1;


while ($i++) {
echo $pad.'<br />';
echo $i.'<br />';
//冲刷出缓存区的内容
ob_flush();
//刷新输出缓冲。把产生的内容立刻输出,而不等待脚本的结束
flush();
sleep(1);
}
以上代码才是真正的ajax即时聊天,打开一个信息传输通道
/*
如果while中的内容,是数据库中的内容或者聊天记录
,这样就达到了即时通讯
服务器端不间断 -- 推送信息 -- 到客户端
*/
如果是连接数据库,把$i换成数据库的内容,当我们在DOS窗口中写入内容的时候,网页就可以直接受到,我们打开了一个信息流通道,并不是非常耗费资源




0 0