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模板技术原理【一】
Jan 10 PHP
用PHP读取flv文件的播放时间长度
Sep 03 PHP
php变量作用域的深入解析
Jun 03 PHP
两级联动select刷新后其值保持不变的实现方法
Jan 27 PHP
php实现下载限制速度示例分享
Feb 13 PHP
php中cookie的使用方法
Mar 29 PHP
PHP判断是否有Get参数的方法
May 05 PHP
PHP文件读写操作相关函数总结
Nov 18 PHP
php版微信返回用户text输入的方法
Nov 14 PHP
PHP实现动态删除XML数据的方法示例
Mar 30 PHP
解决Laravel5.2 Auth认证退出失效的问题
Oct 14 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 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
thinkPHP实现表单自动验证
2014/12/24 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
常见python正则用法的简单实例
2016/06/21 Python
pyhton列表转换为数组的实例
2018/04/04 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
python实现简单五子棋游戏
2019/06/18 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
html5 音乐播放器 audio 标签使用概述
2013/07/15 HTML / CSS
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
遥感技术与仪器求职信
2014/02/22 职场文书
房屋公证委托书
2014/04/03 职场文书
大学生社会实践方案
2014/05/11 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL
Python实现双向链表
2022/05/25 Python