内容目录
						
						今天无意间翻到了这篇博文,觉得很有意思和大家分享一下,原文地址:http://www.chenglin.name/php/blog/629.html
当我们需要实时数据推送,更新客户端信息时,我们需要一个技术来承载我们的这些梦想。
comet,基于 HTTP长连接的“服务器推”技术,是一种新的 Web 应用架构。新浪微博就是用的这种技术;
它只是一个概念,代码还是我们自己写。
我们先剖析下,这个概念: 简单三个字 — 长轮询
这个技术是使用js做请求。
何为 “长” :等待时间长;
何为 “轮询”: 不断请求;
那么加在一起就是 不断请求,但是请求之间间隔时间很长,必须等上一个请求完事后,在继续下一个轮询。
那么一个请求什么时候结束?
这里可以是服务器把请求hold住,要超时了在释放;
要是你害怕服务器不返回怎么办:客户端js settimeout ,每隔一段时间去请求
概念完了,我们看看简单的代码吧:
我们这里实现一个,每隔3秒更新客户端的时间的程序;
客户端html+js:
- <html>
 - <head>
 - <meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8” />
 - <script type=“text/javascript” src=“./jquery.js”></script>
 - <title></title>
 - </head>
 - <body>
 - <div class=“tmp”>123</div>
 - <script type=“text/javascript”>
 - // post 请求
 - function clin_post(){
 - $.post(“chat.php”,function(data){
 - $(‘.tmp’).html(data);
 - clin_post();
 - },‘json’);
 - }
 - clin_post();
 - </script>
 - </body>
 - </html>
 
服务器端PHP:
- <?php
 - $b = time();
 - $num = 5;
 - $t = 0;
 - while( ($num – $t)>0 ) {
 - $e = time();
 - $t = $e – $b;
 - }
 - echo json_encode(date(‘Y-m-d H:i:s’));
 - ?>