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);

}

? >

这就是一个永久执行的页面(网络不断的情况下),不断输出图片的内容,下面是调用的页面。,然后打开你的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中实现刷新功能,PHP-Push技术实现刷新功能相关推荐

  1. linux汇编push,在x86汇编中寄存器上使用的push / pop指令的功能是什么?

    在阅读有关汇编程序的文章时,我经常遇到人们在写文件时他们推送处理器的某个寄存器并稍后再次弹出它以恢复它之前的状态. 怎么能推一个寄存器? 它在哪里推? 为什么需要这个? 这可归结为单处理器指令还是更复 ...

  2. python运用在大数据中精准生活_大数据分析技术在生活中的广泛应用

    段雯琼++薛然++任亚丽 摘 要 文章介绍了大数据技术的即时性.准确性和预测性,并将大数据技术与公共交通.医药领域.移动通信网络优化相结合,从而方便了人们的生活,提高了人们的生活质量. [关键词]大数 ...

  3. 关于.NET中的Server push技术

    关于.NET中的Server push技术 一般来说方法有2种,一种就是客户端用JS异步定时轮询服务器端,这种是大部分人采用的方法,但是我在想到底可以不可以实现服务器端有改变时才会主动推送到客户端呢? ...

  4. [转载]HTTP PUSH技术原理,结合ASP.NET实现以及评述

    HTTP PUSH技术原理,结合ASP.NET实现以及评述 收藏 原文:http://blog.csdn.net/banmuhuangci/archive/2008/09/20/2955719.asp ...

  5. 讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术

    本文讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术 文章目录 InnoDB 体系架构 内存池 后台线程 redo log 与 WAL 策略 CheckPoint 技术 有了 bin ...

  6. NetScaler的Web 2.0 Push技术

    一.前言 通常情况下,异步通知通过使用HTTP和服务器推送技术,如轮训,长轮询和HTTP流,这使得服务器能够将通知推送到浏览器.这些技术需要服务器保持大量的TCP/IP连接,由于其每次连接的时间较短, ...

  7. JCP:曝气生物滤池处理焦化废水过程中N2O和NO的产生机理与群落功能研究

    曝气生物滤池处理焦化废水的N2O和NO排放:主要来源和微生物群落 N2O and NO emission from a biological aerated filter treating cokin ...

  8. JCR:曝气生物滤池处理焦化废水过程中N2O和NO的产生机理与群落功能研究

    曝气生物滤池处理焦化废水的N2O和NO排放:主要来源和微生物群落 N2O and NO emission from a biological aerated filter treating cokin ...

  9. 怎么把dll库写成MATLAB接口,如何在Matlab中应用动态连接库接口技术

    1 引言 Matlab是当前应用最为广泛的数学软件,具有强大的数值计算.数据分析处理.系统 分析.图形显示甚至符号运算等功能.利用这一完整的数学平台,用户可以快速实现十分 复杂的功能,极大地提高工程分 ...

  10. SAP PM技术对象的功能

    SAP PM技术对象的功能 您可以对设备主记录和功能位置执行不同的功能. 数据传输 可以将主数据从一个功能位置传输到其他功能位置或功能位置和设备之间. 使用数据传输功能,您可以在分层结构中将数据维护在 ...

最新文章

  1. iOS 的组件化开发
  2. 测试思想-好东西与大家分享-1
  3. C# 全角半角相互转换
  4. Spring Boot笔记-jQuery使用load进行异步调用
  5. iap 审核 文档_为什么必须审核文档
  6. scrapy 基本操作
  7. linux下文件系统创建
  8. centos6.4 安装wireless驱动
  9. 人脸检测用什么模型_人脸检测模型:使用哪个以及为什么使用?
  10. vscode控制台乱码解决
  11. Detours的使用
  12. MATLAB 提取fig文件中数据的通用方法
  13. 联想a30微型计算机,TEP-I-G W13030123 监控模块,监控单元泰坦TEP-I系列微机监控装置...
  14. ios xmpp研究探索:删除好友
  15. putty上传下载文件到windows
  16. 消息传递,生产者消费者
  17. python爬取海量精美高清漂酿纯真可爱善良小姐姐壁纸(老司机福利)
  18. 55个经典开源Windows工具
  19. BUAA_OO第三单元总结性博客作业——JML
  20. Mysql 1064错误

热门文章

  1. 计算机主机发出滴滴声音,为什么电脑会发出嘀嘀嘀的声音
  2. 深入理解Java虚拟机-程序编译与代码优化
  3. 计算机在化学化工中的应用ppt绪论,化工应用数学第一章绪论摘要.ppt
  4. [剑指Offer]-左旋转字符串
  5. mysql explain中的 “Select tables optimized away”
  6. 计算机主机加固之防范勒索病毒
  7. video的使用,及修改播放按钮进度条的显示与隐藏
  8. 开发板移植RTOS操作系统,RTOS操作系统适配开发板整理大全
  9. Protein Cell:肠道菌群及其代谢物在代谢性疾病中的作用
  10. 基于matlab的蓝色车牌识别(绪论)