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执行zip与rar解压缩方法实现代码
Dec 05 PHP
php长字符串定义方法
Jul 12 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
Jun 13 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
PHP实现多关键字加亮功能
Oct 21 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 PHP
浅析PHP数据导出知识点
Feb 17 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 PHP
laravel 之 Eloquent 模型修改器和序列化示例
Oct 17 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 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编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
PHP curl实现抓取302跳转后页面的示例
2014/07/04 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
JavaScript的parseInt 进制问题
2009/05/07 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
通过C++学习Python
2015/01/20 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
用Python实现读写锁的示例代码
2018/11/05 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
教师求职推荐信范文
2013/11/20 职场文书
聚美优品广告词改编
2014/03/14 职场文书
岗位职责说明书模板
2014/07/30 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
休假证明书
2015/06/24 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
Win11软件图标固定到任务栏
2022/04/19 数码科技