首页 > 开发 > PHP > 正文

php实现统计网站在线人数的方法

2024-05-04 23:35:08
字体:
来源:转载
供稿:网友

这篇文章主要介绍了php实现统计网站在线人数的方法,通过获取服务器端网络参数及文本文件读写实现统计在线人数的功能,非常简单实用,需要的朋友可以参考下

本文实例讲述了php实现统计网站在线人数的方法。分享给大家供大家参考。具体实现方法如下:

 

 
  1. <?php 
  2. function getIpAddress() { // 取得当前用户的IP地址 
  3. if (getenv('HTTP_CLIENT_IP')) { 
  4. $ip = getenv('HTTP_CLIENT_IP'); 
  5. elseif (getenv('HTTP_X_FORWARDED_FOR')) { 
  6. $ip = getenv('HTTP_X_FORWARDED_FOR'); 
  7. elseif (getenv('REMOTE_ADDR')) { 
  8. $ip = getenv('REMOTE_ADDR'); 
  9. else { 
  10. $ip = $_SERVER['REMOE_ADDR']; 
  11. }  
  12. return $ip
  13. }  
  14. function writeover($filename,$data,$method = 'w',$chmod = 0){ 
  15. $handle = fopen($filename$method); 
  16. !handle && die("文件打开失败"); 
  17. flock($handle, LOCK_EX); 
  18. fwrite($handle$data); 
  19. flock($handle, LOCK_UN); 
  20. fclose($handle); 
  21. $chmod && @chmod($filename, 0777); 
  22. }  
  23. function count_online_num($time$ip) { 
  24. $fileCount = './count.txt'
  25. $count = 0; 
  26. $gap = 900; //15分钟不刷新页面就 
  27. if (!file_exists($fileCount)) { 
  28. $str = $time . "/t" . $ip . "/r/n"
  29. writeover($fileCount$str'w', 1); 
  30. $count = 1; 
  31. else { 
  32. $arr = file($fileCount); 
  33. $flag = 0; 
  34. foreach($arr as $key => $val) { 
  35. $val= trim($val); 
  36. if ($val != "") { 
  37. list($when$seti) = explode("/t"$val); 
  38. if ($seti ==$ip) { 
  39. $arr[$key] = $time . "/t" . $seti
  40. $flag = 1; 
  41. else { 
  42. $currentTime = time(); 
  43. if ($currentTime - $when > 900) { 
  44. unset($arr[$key]); 
  45. }else
  46. $arr[$key]=$val
  47. }  
  48. }  
  49. }  
  50. if ($flag == 0) { 
  51. array_push($arr$time . "/t" . $ip); 
  52. }  
  53. $count = count($arr); 
  54. $str = implode("/r/n"$arr); 
  55. $str.="/r/n"
  56. writeover($fileCount$str'w', 0); 
  57. unset($arr); 
  58. }  
  59. return $count
  60. }  
  61. $time = time(); 
  62. $ip = getIpAddress(); 
  63. $online_num = count_online_num($time,$ip); 
  64. echo $online_num
  65. ?> 

希望本文所述对大家的php程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表