当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 关于PHP-Push技术

Unix/Linux
在内核2.6.0-test中安装最新驱动NVIDIA 1.0-4620(共三种方法)
无软驱和光驱安装Redhat方法
如何通过PXE的方式远程安装linux(本地无 光 , 软驱)
网络安装的一点实践
VI 快速上手
Linux下Apache并发连接数和带宽控制
Redhat Linux升级SSH笔记
Linux技巧小总结
DOS兄弟玩转Linux
Linux下C开发环境的构成和安装
linux下通过脚本实现自动重启程序
vi介绍编 (3) ex命令
用 vi 多行注释
uptime 作弊方法
LINUX守护进程介绍
vi介绍编 (3) vi命令
vi介绍编 (1) vi快速入门
vi介绍编 (2) 参数简介
Linux管理员手册(9)--Keeping Time
Linux管理员手册(8)--备份

Unix/Linux 中的 关于PHP-Push技术


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 58 ::
收藏到网摘: n/a

Powered by [email protected]
  转摘请保留,呵呵

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

  以前做刷新主要通过页面上加标签


  < META HTTP-EQUIV=REFRESH CONTENT="time;URL=url" >



  或者使用javascript的timeout+reload,不过这种刷新的方法取决于时间的设定,无法连续的数据传输且时间不好确定。采用了Server push的服务器在客户机做出一个请求后,和客户机建立一个永久的连接,然后服务器会根据客户机的请求不断地把数据包推向服务器。那些你觉察不到的延迟会让你觉得服务器的响应和你的请求已经达到了同步的程度。

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


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

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

  看完这个例子,应该知道怎么处理不断更新的内容了,关键在/DownloadFiles\a\2002-01-29\img.php页面中的处理(可以是检查新的内容并输出),调用的时候可以有img、script、frame等等。详细的其他使用方面请查看:


  http://www.npds.org/  应该是法语吧,呵呵。我没学过哦。