免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2582 | 回复: 3
打印 上一主题 下一主题

如可用PHP实现服务器端的server push功能 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-19 18:48 |只看该作者 |倒序浏览
想用PHP来实现server push 不知如可做,哪位高手能帮小弟一下。

论坛徽章:
0
2 [报告]
发表于 2003-03-20 15:50 |只看该作者

如可用PHP实现服务器端的server push功能

关于PHP-Push技术----绝对原创哦,投稿来了,哈哈 (2002-12-10 10:59:07)

--------------------------------------------------------------------------------

Powered by lguser@163.net
转摘请保留,呵呵

Server push 前一段时间炒得很热的“推”技术,不过网上大部分都是cgi的资料,偶尔看到一个法国的网站上有这么个介绍,可惜法语看不懂,只能从他的程序中看懂点东西,现整理个例子出来大家学习一下。可以用于聊天室的数据传输、网站上的新闻更新、等等各类更新频繁的页面。当然linuxaid的左边短信息也可以处理啦。

以前做刷新主要通过页面上加标签<META HTTP-EQUIV=REFRESH CONTENT=\"time;URL=url\">;,或者使用javascript的timeout+reload,不过这种刷新的方法取决于时间的设定,无法连续的数据传输且时间不好确定。采用了Server push的服务器在客户机做出一个请求后,和客户机建立一个永久的连接,然后服务器会根据客户机的请求不断地把数据包推向服务器。那些你觉察不到的延迟会让你觉得服务器的响应和你的请求已经达到了同步的程度。

现在先来看一下例子再解释。

img.php
<?php
set_time_limit(0);
$file = "./1.jpg";
$sep = "gIrLsKiCkAsSiTsAySsOoNaTsHiRt";

if(ereg(".*MSIE.*",$HTTP_SERVER_VARS["HTTP_USER_AGENT"])){
//如果是ie浏览器,直接输出就退出,IE的不支持哦,我没试出来过
header("Cache-Control: no-cache";
header("ragma: no-cache";
header("Content-type: image/jpeg";
header("Content-size: " . filesize($file));
readfile($file);
}else{
header("Content-Type: multipart/x-mixed-replace; boundary=$sep";//这里是关键哦,看看MIME类型说明你会明白
print "--$sep\n";
do{
print "Content-Type: image/jpeg\n\n";
readfile($file);
print "\n--$sep\n";
flush();
$mt = filemtime($file);
do{
sleep (1);
clearstatcache();
}while($mt == filemtime($file));
}while(1);
}
?>;

好了,这就是一个永久执行的页面(网络不断的情况下),不断输出图片的内容,下面是调用的页面。
《img src=img.php》

然后打开你的netscape或其他非ie浏览器查看调用页面,好象没什么变化啊,别急,接着就是怎样变动1.jpg这个图片了,写个另外的php页面来测试吧,比如弄2张图片按时间来覆盖1.jpg(这个方法自己想,用拷贝覆盖也行,只要1.jpg有变化)。这时你就看到调用页面的图片自动更新了。

使用中你会发现个问题:怎么图片不自动更新了。这是由于客户机在一段时间内没有对服务器发生请求,也就是某一段时间内没有新的内容向浏览器输入,可能发生连接超时现象。什么办法解决呢?可以在执行页面中加个向浏览器发送一个空信号,类似ftp连接方式,上面页面中在do...while(1)间加个print("";

看完这个例子,应该知道怎么处理不断更新的内容了,关键在img.php页面中的处理(可以是检查新的内容并输出),调用的时候可以有img、script、frame等等。

详细的其他使用方面请查看:
http://www.npds.org/
应该是法语吧,呵呵。我没学过哦。

论坛徽章:
0
3 [报告]
发表于 2003-03-20 23:31 |只看该作者

如可用PHP实现服务器端的server push功能

IE不支持赛~

论坛徽章:
0
4 [报告]
发表于 2003-11-04 16:31 |只看该作者

如可用PHP实现服务器端的server push功能

有什么办法让他支持IE呢?????????
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP