快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

PHP教程.应用实例2

PHP-Push技术实现刷新功能
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等等。




返回类别: 教程
上一教程: PHP:风雨欲来 路在何方?
下一教程: php.net新闻拦截

您可以阅读与"PHP教程.应用实例2"相关的教程:
· PHP教程.应用实例8
· PHP教程.应用实例13
· PHP教程.应用实例17
· PHP教程.应用实例16
· PHP教程.应用实例5
    微笑服务 优质保证 索取样品