php统计在线人数的代码结合mysql统计在线人数
时间:2021-07-01 10:21:17
帮助过:19人阅读
- 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: bbs.it-home.org
- */
- $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
- ...
-
|