作者信息:lguser( lguser@163.net) 文章信息:初级 初发日期:2003 02 关键字:PHP-Push 刷新 来源链接: http://www.troyoo.com
摘要: 采用了Server push的服务器在客户机做出一个请求后,和客户机建立一个永久的连接,然后服务器会根据客户机的请求不断地把数据包推向服务器。那些你觉察不到的延迟会让你觉得服务器的响应和你的请求已经达到了同步的程度
<!-- ContentBegin -->Server push 前一段时间炒得很热的“推”技术,不过网上大部分都是cgi的资料,偶尔看到一个法国的网站上有这么个介绍,可惜法语看不懂,只能从他的程序中看懂点东西,现整理个例子出来大家学习一下。可以用于聊天室的数据传输、网站上的新闻更新、等等各类更新频繁的页面。
以前做刷新主要通过页面上加标签。
< 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("Pragma: 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 "; do{ print "Content-Type: image/jpeg "; readfile($file); print " --$sep "; 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/
|
相关推荐
PHP-Push-2, 使用 caldav/ldap支持的Z 推送 fork PHP-Push-2PHP-Push-2是 z 推送 -2的modiefied版本,这是开源ActiveSync实现,带有CalDAV和多项目支持。特性使用"组合后端"php-push-2支持以下功能:邮件- IMAP日历-
热更新时,我们执行命令 npm install -g cordova-hot-code-push-cli安装插件,但运行cordova-hcp server会报错,如:Could not create tunnel: { Error: ngrok is not yet ready to start tunnels...,这时我们找到...
【微信小程序-毕设期末大作业】k-push小程序(含后端源码).zip 【微信小程序-毕设期末大作业】k-push小程序(含后端源码).zip 【微信小程序-毕设期末大作业】k-push小程序(含后端源码).zip 【微信小程序-毕设...
npm install --save react-native-push-notification react-native link NOTE: For Android, you will still have to manually update the AndroidManifest.xml (as below) in order to use Scheduled Notifications...
wap-251-pushmessage-20010322-a.pdf
Laravel开发-laravel-push-notification Push Notification 服务端支持 app的推送通知发送工具,支持结果的apns和安装的gcm
启动cordova-hcp server报错 Could not create tunnel: { Error: ngrok is not yet ready to start tunnels 时,将路径 下的cordova-hot-code-push-cli文件下用下载的文件替换就可以了
1620374400000_com.eg.android.AlipayGphone-push.2nd
Laravel开发-pusher-push-notifications 推送器本机推送通知驱动程序。
Laravel开发-umeng-push 拉拉维尔的推手
K-push小程序前端源码分享,资源分享,提供大家学习参考
react-native-code-push集成android篇主要是讲述怎么在react-native中android端集成codepush热更新,内容详细,过程丰富,很适合新手,过程一目了然
react-native-code-push集成之ios篇是react-native IOS端集成codepush热更新的过程,内容丰富,过程详细,非常适合新手
go-push:用GO实现推送
helm-push离线安装包,使得Helm3安装后可以使用helm push命令上传自己的chart至私有仓库
Laravel开发-laravel-push-notification 向移动设备(APN、GCM、WPN、BlackBerry)发送推送通知的Laravel包
docker-rhel-push-plugin-1.13.1-47.2.gitf43d177.el7.x86_64.rpm
java-Push开源实时消息推送系统
资源分类:Python库 所属语言:Python 资源全名:aliyun-python-sdk-push-3.13.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
react-native-code-push, 为CodePush响应本机模块 针对CodePush响应本机 MODULE注意:这个自述文件只与我们的插件的最新版本相关。 如果你使用的是旧版本,请在我们的GitHub repo 上找到相关标签,以便查看该特定...