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 相关文章推荐
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
Jul 29 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
PHP和MySql中32位和64位的整形范围是多少
Feb 18 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
Mar 25 PHP
浅谈PHP中的
Apr 23 PHP
最新最全PHP生成制作验证码代码详解(推荐)
Jun 12 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
Dec 23 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
用PHP产生动态的影像图
2006/10/09 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
javascript 限制输入脚本大全
2009/11/03 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
python实现用户答题功能
2018/01/17 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
python得到windows自启动列表的方法
2018/10/14 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
python 提取文件指定列的方法示例
2019/08/07 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
超市总经理岗位职责
2014/02/02 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL
MySQL 逻辑备份 into outfile
2022/05/15 MySQL