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中判断一个字符串包含另一个字符串的方法
Mar 19 PHP
php select,radio和checkbox默认选择的实现方法
May 15 PHP
php smarty 二级分类代码和模版循环例子
Jun 16 PHP
php header Content-Type类型小结
Jul 03 PHP
基于xcache的配置与使用详解
Jun 18 PHP
如何取得中文字符串中出现次数最多的子串
Aug 08 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
php中try catch捕获异常实例详解
Nov 21 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
Sep 20 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
Jun 07 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
May 28 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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
转PHP手册及PHP编程标准
2006/12/17 PHP
php set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
深入PHP异步执行的详解
2013/06/03 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
PHP convert_cyr_string()函数讲解
2019/02/13 PHP
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
简单介绍Python中的JSON模块
2015/04/08 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
python中logging包的使用总结
2018/02/28 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
python中threading开启关闭线程操作
2020/05/02 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
几道PHP面试题
2013/04/14 面试题
2014年办公室文秘工作总结
2014/12/09 职场文书
教你利用python实现企业微信发送消息
2021/05/23 Python