PHP实现在线人数统计的简单方法
来源:http://www.7dit.com 作者:7dit 发布日期:2008-09-22 14:10:30 点击量:322
PHP没有application对象。那怎样保存一个全站的信息呢?
最简单的方式就是利用数据库,因为数据库和application一样是一个"公有对象"。
一. 在线人数,一般是根据浏览者的IP进行判断。因此只需要在数据库中存放当前浏览者的IP即可,可以将IP设为主键,省去判断的麻烦。 统计时只需要取出所有IP就能知道当前
的在线IP数。
二. 监听: PHP不像servlet那样可以设置一个会话监听, 要判断一个IP是否已失效, 也需要对数据库进行操作。 首先需要一个变量来存放IP失败的时长, 这里假设一个INT整
的变量,表示IP失效所需的时间的秒数。思路是通过判断IP记录的时间与当前时间的差,进行数据删除。
数据库表如下:
表名:useronline
IP varchar(15) primarykey //存放IP
createTime int(25) //存放创建该IP记录的时间戳
PHP文件定义两个函数
setOnlineCount()
{
global $conn; //数据库的连接源
$ip = $_SERVER['REMOTE_ADDR']; //当前访问的用户IP
$nowtime = time(); //获取当前的时间秒数
$sqlstring = "insert into useronline values('$newip',$nowtime)"; //执行新增IP的语句
mysql_query($sqlstring,$conn);
//该函数不关注IP的监听,只关注IP的新增,因为IP为主键,所以不需再判断IP是否存在于数据库中,如果相同插入操作将失败
}
getOnlineCount()
{
global $conn;
$nowtime = time(); //当前时间戳
$sqlstringdel = "delete from useronline where $nowtime-otime >= 1200"; //先删除时间差为1200秒(即20分钟内的IP记录)
mysql_query($sqlstringdel,$conn);
$sqlstring = "select count(*) from useronline"; //只需统计当前IP库的记录则可返回在线人数
$rs = mysql_query($sqlstring,$conn);
if($row = mysql_fetch_array($rs,MYSQL_NUM))
{
return $row[0];
}
else
{
return 0;
}
}
Copyright © 2005 奇点中文网--7dit.com
闽ICP备05001292号
闽ICP备05001292号
