Heim  >  Artikel  >  Backend-Entwicklung  >  php统计在线人数的代码 结合mysql统计在线人数

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

WBOY
WBOYOriginal
2016-07-25 08:58:591211Durchsuche
  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))//找出在半个小时内的记录,后面的WHERE子句可有可无--超出时间的已经被删除了

  27. $ccol->next_record()
  28. echo "在线人数:", $ccol->f('ccol');
  29. $ccol->free_result();
  30. ?>
复制代码

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

  1. --index.php
  2. ...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn