Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php统计在线人数的代码 结合mysql统计在线人数

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

WBOY
WBOYasal
2016-07-25 08:58:591211semak imbas
  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. ...
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn