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

PHP
php教程:mysql数据库操作的DB类
PHP教程:cookie和数组的结合实现购物车
php教程:mysql的常用语句
php教程:经典PHP代码
php编程中遇到的cookie的问题
php入门交流:鼓励学习PHP的新手
细数PHP程序的一些缺陷
说明PHP开发网站程序的优点
PHP+MYSQL网站开发中遇到的问题汇总
php教程:php设计模式介绍之工厂模式
ubuntu下apache2不能解释php程序故障
WIN2003+IIS6+PHP5根目录无法运行PHP程序
PHP+MYSQL网站开发中关于时间的问题
PHP正则表达式提取超链接及其标题
PHP中的Date()函数详细讲解
初学:apache与php基本配置
PHP串行化与JSON
php教程:php设计模式介绍之单条模式
PHP中不能使用exec(),system(),shell_system()等函数
PHP正则表达式从url中取得域名

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 249 ::
收藏到网摘: 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> 好了基本上就这些!