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

PHP
mysql 字段类型说明
mysql 搜索之简单应用
mysql 全文搜索 技巧
escape unescape的php下的实现方法
解决php中Cannot send session cache limiter 的问题的方法
php 中的str_replace 函数总结
php下的权限算法的实现
php下实现折线图效果的代码
php中的MVC模式运用技巧
什么是MVC,好东西啊
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
不错的PHP学习之php4与php5之间会穿梭一点点感悟
MySQL授权问题总结
站长助手-网站web在线管理程序 v1.0 下载
MySQL GBK→UTF-8编码转换
中国站长站 For Dede4.0 采集规则
Win2003下IIS+PHP+MySQL+Zend配置步骤详解
Discuz板块横排显示图片的实现方法
测试您的 PHP 水平的题目
PHP5.2下chunk_split()函数整数溢出漏洞 分析

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


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