当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP+AJAX实现实时显示在线用户信息

PHP
phpMyAdmin 3.1.1MySQL数据库管理利器
在Windows下面从源代码编译PHP的步骤
编程大师论道:PHP的魅力和不足何在
Flashlm:增加PHP的Session存储和处理能力
Web 2.0 时代PHP将受更多人的青睐
PHP实现通过Web执行C/C
PHP服务器变量设置的方法介绍
用PHP编程读取汉字点阵数据
初学者必读 PHP常用开发工具分析
在PHP中操作MySQL要注意哪些问题
PHP采集程序中常用的函数
例举PHP语言中的精华与技巧
PHP性能优化的技巧
PHP代码的优与劣
PHP下载远程文件类(支持断点续传)
PHP的正则处理函数总结分析
PHP 反射机制实现动态代理的代码
PHP中函数内引用全局变量的方法
使用PHP重新实现PHP脚本引擎内置函数
表单FORM与GET方法的区别

PHP+AJAX实现实时显示在线用户信息


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

我现在的博客就使用了这种方法来显示的在线用户信息的,但是觉得开销太大了!负载能力不太好!如果小型的站点足够用了!

我的博客用的Jquery框架,当然Ajax调用方式就很简单了!如下:

function UpdateOnline(){     if (arguments[0]==true){         $.ajax({             url:'ajax.php?do=updateonline',             type:'GET',             success:function(){                 $('#updateonline').html(arguments[0])             }         }         );     }else{         $.ajax({url:'ajax.php?do=updateonline',type:'GET'});     } }
这个updateonline是div的ID。

还有就是调用这个函数!

$(document).ready(function(){     UpdateOnline(true);     window.setInterval("UpdateOnline(true)",60000); });

下面是服务端处理代码:

$Now=time(); $FileName='online.xml'; $XML=new DomDocument; $XML->load($FileName); $Items=$XML->getElementsByTagName("item"); $I=0; $AddXML=true; foreach ($Items as $Item){     $IP=$Item->childNodes->item(0)->nodeValue;     $Time=$Item->childNodes->item(1)->nodeValue;      if($IP==GetIP()){         $AddXML=false;     }     if($IP==@$_SESSION['IP']){         $XML_Online=$XML->getElementsByTagName("online")->item(0);         $XML_Online_Item_Select=$XML->getElementsByTagName("item")->item($I);         $XML_Online_Item=$XML->createElement("item");         $NewIP=$XML->createElement("ip",$IP);         $XML_Online_Item->appendChild($NewIP);         $NewTime=$XML->createElement("time",$Now);         $XML_Online_Item->appendChild($NewTime);         $XML_Online->replaceChild($XML_Online_Item,$XML_Online_Item_Select);         $XML->save($FileName);     }     if(round(($Now-$Time)/60)>1){        $Item=$XML->documentElement->getElementsByTagName("item")->item($I);        $XML->documentElement->removeChild($Item);        $XML->save($FileName);     }     $I++; } if($AddXML){         $XML->formatOutput = true;         $XML_Online=$XML->getElementsByTagName("online")->item(0);         $XML_Online_Item=$XML->createElement("item");         $XML_Online_Item_IP=$XML->createElement("ip",GetIP());         $XML_Online_Item->appendChild($XML_Online_Item_IP);         $XML_Online_Item_Time=$XML->createElement("time",$Now);         $XML_Online_Item->appendChild($XML_Online_Item_Time);         $XML_Online->appendChild($XML_Online_Item);         $XML->save($FileName);         $_SESSION['IP']=GetIP(); } if($Items->length==0){     echo'1'; }else{     echo $Items->length; } unset($Now,$FileName,$XML,$Items,$I,$AddXML);
配合了session来存储IP地址以区分用户。

下面是XML文件

<?xml version="1.0" encoding="utf-8"?> <online> <item><ip>127.0.0.1</ip><time>1232254720</time></item> </online> 好了基本上就这些!