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 相关文章推荐
sqlyog 中文乱码问题的设置方法
Oct 19 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
Apr 12 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
php目录遍历函数opendir用法实例
Nov 20 PHP
linux中cd命令使用详解
Jan 08 PHP
php无限分类使用concat如何实现
Nov 05 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
Jun 17 PHP
php使用curl伪造来源ip和refer的方法示例
May 08 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 PHP
调试php程序的简单步骤
Oct 04 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
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
浅谈Redux中间件的实践
2018/07/27 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
使用Python来开发微信功能
2018/06/13 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
opencv python图像梯度实例详解
2020/02/04 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
浅析NumPy 切片和索引
2020/09/02 Python
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
Farah官方网站:男士服装及配件
2019/11/01 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
初中女生自我鉴定
2013/12/19 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
幼儿园开学寄语
2014/04/03 职场文书
教师一岗双责责任书
2014/04/16 职场文书