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


Posted in PHP onMay 12, 2015

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

<?php
function getIpAddress() { // 取得当前用户的IP地址
 if (getenv('HTTP_CLIENT_IP')) {
 $ip = getenv('HTTP_CLIENT_IP');
 } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
 $ip = getenv('HTTP_X_FORWARDED_FOR');
 } elseif (getenv('REMOTE_ADDR')) {
 $ip = getenv('REMOTE_ADDR');
 } else {
 $ip = $_SERVER['REMOE_ADDR'];
 } 
 return $ip;
} 
function writeover($filename,$data,$method = 'w',$chmod = 0){
 $handle = fopen($filename, $method);
 !handle && die("文件打开失败");
 flock($handle, LOCK_EX);
 fwrite($handle, $data);
 flock($handle, LOCK_UN);
 fclose($handle);
 $chmod && @chmod($filename, 0777);
} 
function count_online_num($time, $ip) {
 $fileCount = './count.txt';
 $count = 0;
 $gap = 900; //15分钟不刷新页面就
 if (!file_exists($fileCount)) {
 $str = $time . "\t" . $ip . "\r\n";
 writeover($fileCount, $str, 'w', 1);
 $count = 1;
 } else {
 $arr = file($fileCount);
 $flag = 0;
 foreach($arr as $key => $val) {
  $val= trim($val);
  if ($val != "") {
  list($when, $seti) = explode("\t", $val);
  if ($seti ==$ip) {
   $arr[$key] = $time . "\t" . $seti;
   $flag = 1;
  } else {
   $currentTime = time();
   if ($currentTime - $when > 900) {
   unset($arr[$key]);
   }else{
   $arr[$key]=$val;
   }
  } 
  } 
 } 
 if ($flag == 0) {
  array_push($arr, $time . "\t" . $ip);
 } 
 $count = count($arr);
 $str = implode("\r\n", $arr);
 $str.="\r\n";
 writeover($fileCount, $str, 'w', 0);
 unset($arr);
 } 
 return $count;
} 
$time = time();
$ip = getIpAddress();
$online_num = count_online_num($time,$ip);
echo $online_num;
?>

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

PHP 相关文章推荐
JAVA/JSP学习系列之四
Oct 09 PHP
谈谈PHP语法(3)
Oct 09 PHP
PHPMyAdmin 快速配置方法
May 11 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
Nov 07 PHP
10个实用的PHP正则表达式汇总
Oct 23 PHP
php格式化日期实例分析
Nov 12 PHP
PHP中上传多个文件的表单设计例子
Nov 19 PHP
微信access_token的获取开发示例
Apr 16 PHP
php添加数据到xml文件的简单例子
Sep 08 PHP
Yii2框架自定义类统一处理url操作示例
May 25 PHP
详解将数据从Laravel传送到vue的四种方式
Oct 16 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
PHP输出一个等腰三角形的方法
May 12 #PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 #PHP
PHP获取数组最大值下标的方法
May 12 #PHP
PHP Streams(流)详细介绍及使用
May 12 #PHP
PHP stream_context_create()函数的使用示例
May 12 #PHP
php中使用gd库实现下载网页中所有图片
May 12 #PHP
php中使用gd库实现远程图片下载实例
May 12 #PHP
You might like
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
php str_replace的替换漏洞
2008/03/15 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
2020/07/31 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
Html5定位终极解决方案
2020/02/05 HTML / CSS
简述安装Slackware Linux系统的过程
2012/05/08 面试题
单位绩效考核方案
2014/05/11 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
大学生活感想
2015/08/10 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
python中filter,map,reduce的作用
2022/06/10 Python