首頁  >  文章  >  後端開發  >  php統計線上人數的程式碼 結合mysql統計線上人數

php統計線上人數的程式碼 結合mysql統計線上人數

WBOY
WBOY原創
2016-07-25 08:58:591211瀏覽
  1. CREATE TABLE ccol(
  2. id integer not null auto_increment, #记录的ID
  3. ip char(15) not null, #访问者的IP地址
  4. dtstamp datetime not null, #最后访问时间
  5. uri char(255), #访问者请求的URI
  6. primary key (id)
  7. );
复制代码

然后,编写统计用的php代码

  1. /*

  2. 文件:ccol.php
  3. 目的:统计同时在线浏览的人数
  4. edit: bbs.it-home.org
  5. */
  6. $duration=1800;
  7. require "db.php"; //自行准备,数据库访问类
  8. //包含DBSQL
  9. $ccol=new dbSQL;
  10. $ccol->connect();
  11. $ccol->query("DELETE FROM ccol WHERE (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(dtstamp))>$duration");
  12. //删除超过半小时的记录
  13. $ccol->query("SELECT * FROM ccol WHERE ip='$REMOTE_ADDR'");
  14. //判断当前的IP是否在该表中存在
  15. if ($ccol->nf())//有?
  16. {
  17. $ccol->next_record();//下移找到的记录数组的指针
  18. $id=$ccol->f('id');
  19. $ccol->query("UPDATE ccol SET dtstamp=now(), uri='$REQUEST_URI' WHERE id=$id");
  20. //设置最后访问时间和访问页面
  21. }
  22. else//没有
  23. {
  24. $ccol->query("INSERT INTO ccol VALUES (0, '$REMOTE_ADDR', now(), '$REQUEST_URI')");
  25. }

  26. $ccol->query("SELECT COUNT(*) AS ccol FROM ccol WHERE (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(dtstamp))<=$duration");

  27. //找出在半个小时内的记录,后面的WHERE子句可有可无--超出时间的已经被删除了
  28. $ccol->next_record()
  29. echo "在线人数:", $ccol->f('ccol');
  30. $ccol->free_result();
  31. ?>

复制代码

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

  1. --index.php
  2. ...