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

PHP
服务器端解压缩zip的脚本
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
PHP+JS无限级可伸缩菜单详解(简单易懂)
实例(Smarty+FCKeditor新闻系统)
影响PHP+MYSQL执行速度的写法对比
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
增加反向链接的101个方法 站长推荐
PHP音乐采集(部分代码)
用PHPdig打造属于你自己的Google[图文教程]
几篇关于无限分类算法的文章
解决GD中文乱码问题
浅析PHP水印技术
珊瑚虫IP库浅析
excellent!:ASCII Art(由目标图象生成ascii)
用PHP实现Ftp用户的在线管理的代码
可定制的PHP缩略图生成程式(需要GD库支持)
15种PHP Encoder的比较
利用discuz自带通行证整合dedecms的方法以及文件下载
用PHP 快速生成 Flash 动画的方法
六酷社区论坛HOME页清新格调免费版 下载

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


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