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函数)
Oct 09 PHP
php 404错误页面实现代码
Jun 22 PHP
PHP设计模式之命令模式的深入解析
Jun 13 PHP
CodeIgniter生成网站sitemap地图的方法
Nov 13 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
PHP中的类型提示(type hinting)功能介绍
Jul 01 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
Sep 25 PHP
php基于SQLite实现的分页功能示例
Jun 21 PHP
PHP并发查询MySQL的实例代码
Aug 09 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
Oct 16 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 导出Excel示例分享
2014/08/18 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
Python字符转换
2008/09/06 Python
python thread 并发且顺序运行示例
2009/04/09 Python
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
python多线程编程中的join函数使用心得
2014/09/02 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
简单了解Python write writelines区别
2020/02/27 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
JAVA高级程序员面试题
2013/09/06 面试题
大学教师年终总结的自我评价
2013/10/29 职场文书
2014中考励志标语
2014/06/05 职场文书
物流专业求职信
2014/06/30 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
js实现自动锁屏功能
2021/06/02 Javascript