> 백엔드 개발 > PHP 튜토리얼 > 온라인에 있는 사람 수를 계산하는 PHP 코드와 mysql을 결합하여 온라인에 있는 사람 수를 계산하는 코드

온라인에 있는 사람 수를 계산하는 PHP 코드와 mysql을 결합하여 온라인에 있는 사람 수를 계산하는 코드

WBOY
풀어 주다: 2016-07-25 08:58:59
원래의
1214명이 탐색했습니다.
  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. ...