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

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

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

时间: 2024-10-31 22:03:28

PHP-Push技术实现刷新功能 转载的相关文章

PHP-Push技术实现刷新功能

刷新 Server push 前一段时间炒得很热的"推"技术,不过网上大部分都是cgi的资料,偶尔看到一个法国的网站上有这么个介绍,可惜法语看不懂,只能从他的程序中看懂点东西,现整理个例子出来大家学习一下.可以用于聊天室的数据传输.网站上的新闻更新.等等各类更新频繁的页面. 以前做刷新主要通过页面上加标签. < META HTTP-EQUIV=REFRESH CONTENT="time;URL=url" > 或者使用javascript的timeout+

Android移动端touch实现下拉刷新功能

第一部分:四个touch事件 1.touchstart:只要将手指放在了屏幕上(而不管是几只),都会触发touchstart事件. 2.touchmove: 当我们用手指在屏幕上滑动时,这个事件会被连续触发. 如果我们不希望页面随之滑动,我们可以使用event的preventDefault来阻止这个默认行为. 3.touchend: 当手指滑动后离开屏幕,这时就触发了touchend事件. 4.touchcancel: 系统停止跟踪触摸时候会触发.例如在触摸过程中突然页面alert()一个提示框

纯JS实现AJAX局部刷新功能

AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaScript和XML(标准通用标记语言的子集). AJAX 是一种用于创建快速动态网页的技术. 下面给大家介绍JS实现AJAX局部刷新功能,具体内容如下所示: 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. //

全程体验Windows 8系统刷新功能:重装不再丢数据

重新安装操作系统可以帮助我们拥有一个全新的计算机操作环境,但是每次重新安装操作系统后,我们都会发现个人数据.一些重要设置都消失了,这对于我们来说是一个硬伤.其实在Windows8中,现在提供了一种全新的功能---系统刷新.它可以帮助我们保留计算机中所有的个人数据.Metro风格应用程序和重要设置,并重新安装Windows.这对于很对使用Windows的爱好者来说是一个福音. 其实系统刷新功能在重新安装Windows时,数据.设置和 Metro 风格应用程序将获得保留.它最大的优势在于我们无需提前

Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能

最近项目中需要用到ListView下拉刷新的功能,一开始想图省事,在网上直接找一个现成的,可是尝试了 网上多个版本的下拉刷新之后发现效果都不怎么理想.有些是因为功能不完整或有Bug,有些是因为使用起来 太复杂,十全十美的还真没找到.因此我也是放弃了在网上找现成代码的想法,自己花功夫编写了一种非常 简单的下拉刷新实现方案,现在拿出来和大家分享一下.相信在阅读完本篇文章之后,大家都可以在自己的 项目中一分钟引入下拉刷新功能. 首先讲一下实现原理.这里我们将采取的方案是使用组合View的方 式,先自定

Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能

以下是我自己花功夫编写了一种非常简单的下拉刷新实现方案,现在拿出来和大家分享一下.相信在阅读完本篇文章之后,大家都可以在自己的项目中一分钟引入下拉刷新功能   最近项目中需要用到ListView下拉刷新的功能,一开始想图省事,在网上直接找一个现成的,可是尝试了网上多个版本的下拉刷新之后发现效果都不 怎么理想.有些是因为功能不完整或有Bug,有些是因为使用起来太复杂,十全十美的还真没找到.因此我也是放弃了在网上找现成代码的想法,自己花功夫编写 了一种非常简单的下拉刷新实现方案,现在拿出来和大家分享

纯javascript实现简单下拉刷新功能

 这篇文章主要介绍了纯javascript实现简单下拉刷新功能,没有借助任何的框架,十分简单实用,有需要的小伙伴来参考下吧.     代码很简单,实现的功能却很实用,直接奉上代码 CSS:   代码如下: <meta charset="utf-8" /> <title>Pull to Refresh</title> <meta name="viewport" content="width=device-width,

Android ListView实现上拉加载更多和下拉刷新功能_Android

本文实例为大家介绍了Android ListView下拉刷新功能的实现方法和功能,供大家参考,具体内容如下 1.ListView优化方式 界面缓存:ViewHolder+convertView分页加载:上拉刷新图片缓存快速滑动ListView禁止刷新 2.效果 3.上拉加载更多原理及实现 当我们手指滑动到listview最后位置的时候,我们触发加载数据的方法.这触发之前我们需要做一些工作,包括: 如何判断滑动到最后? 如何避免重复加载数据? 加载之后如何刷新界面? 1).界面实现AbsListV

Android 高仿微信(QQ)滑动弹出编辑、删除菜单效果,增加下拉刷新功能

  不可否认,微信.QQ列表的滑动删除.编辑功能着实很经典(从IOS那边模仿过来的),然.Android这边,对列表的操作,其实大多还停留上下文菜单来实现.    Android如何实现list item的滑动呢?介绍一个很简单实用的开源项目:   https://github.com/baoyongzhang/SwipeMenuListView   使用该开源项目,我们只需要很简单的一些逻辑,就可以实现滑动菜单功能了!先看下效果图:       1. 下载开源项目,并将其中的liberary导