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 相关文章推荐
PHP初学者头疼问题总结
Jul 08 PHP
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
Jul 24 PHP
php自定义apk安装包实例
Oct 20 PHP
Laravel 4 初级教程之安装及入门
Oct 30 PHP
php中数字、字符与对象判断函数用法实例
Nov 26 PHP
php生成RSS订阅的方法
Feb 13 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
PHP获取页面执行时间的方法(推荐)
Dec 10 PHP
thinkPHP5.0框架命名空间详解
Mar 18 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 PHP
解决Laravel使用验证时跳转到首页的问题
Nov 17 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
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
PHP中overload与override的区别
2017/02/13 PHP
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
申报职称专业技术个人的自我评价
2013/12/12 职场文书
房地产促销活动方案
2014/03/01 职场文书
校园文化标语
2014/06/18 职场文书
拆迁委托协议书
2014/09/15 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
离婚协议书样本
2015/01/26 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
大学运动会通讯稿
2015/07/18 职场文书
婚宴来宾致辞
2015/07/28 职场文书