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与SQL注入攻击[一]
Apr 17 PHP
php 读取文件乱码问题
Feb 20 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
php过滤表单提交的html等危险代码
Nov 03 PHP
php自定义hash函数实例
May 05 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
Nov 05 PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
Laravel多用户认证系统示例详解
Mar 13 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 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
2021年最新CPU天梯图
2021/03/04 数码科技
PHP网站备份程序代码分享
2011/06/10 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
javascript中的float运算精度实例分析
2010/08/21 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
python绘制直线的方法
2018/06/30 Python
Python中安装easy_install的方法
2018/11/18 Python
python字符串中匹配数字的正则表达式
2019/07/03 Python
Python colormap库的安装和使用详情
2020/10/06 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
你的自行车健身专家:FaFit24
2016/11/16 全球购物
VICHY薇姿美国官方网站:欧洲药房第一的抗衰老品牌
2017/11/22 全球购物
工会工作先进事迹
2014/08/18 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
实习科室评语
2015/01/04 职场文书
英文版辞职信
2015/02/28 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers