php统计在线人数的代码 结合mysql统计在线人数

发布时间:2020-02-20编辑:脚本学堂
本文介绍下,在php中统计在线人数的方法,数据记录在mysql数据表中,有需要的朋友,参考下吧。

php统计在线人数的方法,我们之前介绍过一篇:
一个比较精确的统计在线人数的php代码,有兴趣的朋友,可以研究下。

今天,我们介绍的这个,可以详细记录在线访问者的IP地址,最后访问时间,请求的url等信息。供大家参考。

首先,创建数据表 ccol:
 

复制代码 代码示例:
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
目的:统计同时在线浏览的人数
edit: www.jb200.com
*/
$duration=1800;
require "db.php"; //自行准备,数据库访问类
//包含DBSQL
$ccol=new dbSQL;
$ccol->connect();
$ccol->query("DELETE FROM ccol WHERE (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(dtstamp))>$duration");
//删除超过半小时的记录
$ccol->query("SELECT * FROM ccol WHERE ip='$REMOTE_ADDR'");
//判断当前的IP是否在该表中存在
if ($ccol->nf())//有?
{
$ccol->next_record();//下移找到的记录数组的指针
$id=$ccol->f('id');
$ccol->query("UPDATE ccol SET dtstamp=now(), uri='$REQUEST_URI' WHERE id=$id");
//设置最后访问时间和访问页面
}
else//没有
{
$ccol->query("INSERT INTO ccol VALUES (0, '$REMOTE_ADDR', now(), '$REQUEST_URI')");
}

$ccol->query("SELECT COUNT(*) AS ccol FROM ccol WHERE (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(dtstamp))<=$duration");
//找出在半个小时内的记录,后面的WHERE子句可有可无--超出时间的已经被删除了
$ccol->next_record()
echo "在线人数:", $ccol->f('ccol');
$ccol->free_result();
?>

调用方法,在站点的每个页面的上面调用这个程序。
例如:
 

复制代码 代码示例:
--index.php
...
<!--显示在线人数->
<?require ../stats/ccol.php?>
...

总结,以上代码仅供初学者参考。
有兴趣的朋友,可以加以改进与扩展,有好的统计在线人数的代码,也欢迎大家分享交流。