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 相关文章推荐
其他功能
Oct 09 PHP
php header示例代码(推荐)
Sep 08 PHP
优化PHP程序的方法小结
Feb 23 PHP
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
微信公众平台消息接口校验与消息接口响应实例
Dec 23 PHP
分享十款最出色的PHP安全开发库中文详细介绍
Mar 22 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
Jun 06 PHP
我整理的PHP 7.0主要新特性
Jan 07 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
php file_get_contents取文件中数组元素的方法
Apr 01 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
Python中无限元素列表的实现方法
2014/08/18 Python
Python3遍历目录树实现方法
2015/05/22 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
Python 实现集合Set的示例
2020/12/21 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
整改通知书
2015/04/20 职场文书
立春观后感
2015/06/18 职场文书
了解Redis常见应用场景
2021/06/23 Redis
5个实用的JavaScript新特性
2022/06/16 Javascript