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 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
Apr 22 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 PHP
php中get_defined_constants函数用法实例分析
May 12 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
Oct 26 PHP
PHP定时执行任务的3种方法详解
Dec 21 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
Jun 24 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 PHP
Yii框架连表查询操作示例
Sep 06 PHP
php提高脚本性能的4个技巧
Aug 18 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自动获取字符串编码函数mb_detect_encoding
2011/05/31 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
pyqt4教程之widget使用示例分享
2014/03/07 Python
Python中的推导式使用详解
2015/06/03 Python
Python Pillow Image Invert
2019/01/22 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
热能动力工程毕业生自荐信
2013/11/07 职场文书
工艺工程师工作职责
2013/11/23 职场文书
九年级英语教学反思
2014/01/31 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
预备党员思想汇报1000字
2014/10/07 职场文书
小学班主任个人总结
2015/03/03 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
vue特效之翻牌动画
2022/04/20 Vue.js
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技