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的ob_start();控制您的浏览器cache!
Nov 25 PHP
php下获取客户端ip地址的函数
Mar 15 PHP
PHP 飞信好友免费短信API接口开源版
Jul 22 PHP
深入PHP5中的魔术方法详解
Jun 17 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
PHP实现ftp上传文件示例
Aug 21 PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 PHP
Docker 如何布置PHP开发环境
Jun 21 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
微信小程序和php的登录实现
Apr 01 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中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
javascript 关闭IE6、IE7
2009/06/01 Javascript
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
2016/01/14 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
JavaScript实现图片切换效果
2017/08/12 Javascript
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
编写Python的web框架中的Model的教程
2015/04/29 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
大专应届生个人简历的自我评价
2013/10/15 职场文书
机电专业毕业生推荐信
2013/11/10 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
班主任对学生的评语
2014/04/26 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
前台接待岗位职责
2015/02/03 职场文书
面试通知单大全
2015/04/20 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
深入理解 Golang 的字符串
2022/05/04 Golang
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL