mysql在线人数_MySQL当前在线人数统计

首先,用MySQL的工具建一个表:

CREATE TABLE ccol(

id integer not null auto_increment, #记录的ID

ip char(15) not null, #访问者的IP地址

dtstamp datetime not null, #最后访问时间

uri char(255), #访问者请求的URI

primary key (id)

);

然后,写一段PHP代码:

/*

文件:ccol.php - ConCurrent OnLine statistics

目的:统计同时在线浏览的人数

作者:Hunte, hunte@phpuser.com

修改:2000-4-25

*/

$duration=1800;

require "db.php";

//包含DBSQL,详情可以参考我的另一篇文章

$ccol=new dbSQL;

$ccol-&gtconneCT();

$ccol-&gtquery("DELETE FROM ccol WHERE

(UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(dtstamp))&gt$duration");

//删除超过半小时的记录

$ccol-&gtquery("SELECT * FROM ccol WHERE ip="$REMOTE_ADDR"");

//判断当前的IP是否在该表中存在

if ($ccol-&gtnf())//有?

{

$ccol-&gtnext_record();//下移找到的记录数组的指针

$id=$ccol-&gtf("id");

$ccol-&gtquery("UPDATE ccol SET dtstamp=now(), uri="$REQUEST_URI" WHERE id=$id");

//设置最后访问时间和访问页面

}

else//没有

{

$ccol-&gtquery("INSERT INTO ccol VALUES (0, "$REMOTE_ADDR", now(), "$REQUEST_URI")");

}

$ccol-&gtquery("SELECT COUNT(*) AS ccol FROM ccol WHERE

(UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(dtstamp))&lt=$duration");

//找出在半个小时内的记录,后面的WHERE子句可有可无--超出时间的已经被删除了

$ccol-&gtnext_record()

echo "在线人数:", $ccol-&gtf("ccol");

$ccol-&gtfree_result();

怎么用呢?在站点的每个页面的上面调用这个程序.

当然,这段代码还有改进的余地。例如,在每次调用是都要删除半小时前的记录,这是没有必要而且会降低效率。

可以一个什么办法过更长的时间再做,比如6小时。大家自个儿想想吧,我就不说了。

这种方法只要稍做修改,就可以派上别的用处,如SESSION的管理、网站的访问统计分析等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值