php使用Session和文件统计在线人数


Posted in PHP onJuly 04, 2015
<?php 
/* 
@ PHP 在线人数统计程序 
Copyright (c) by Pader 1:25 2009年1月7日 
How to use it: <script src="online.php"></script> 
note: 一般独立在线人数统计程序都是统计在线的IP数,而这并不准确 
例如局域网的访问者,比如公司,学校机房和网吧,虽然内网IP不同,但是外网IP都是一样 
如果同一个局域网的无论多少人人访问你的网站则只被认为是一个人 
这个小巧的程序解决了此问题,它以电脑为单为,每台电脑便算一个访问者 
当然因为使用的是COOKIE,如果你在同一台电脑上使用两种不同核心的浏览器访问那就别当别论了 
*/ 
$filename = 'online.txt'; //数据文件,如果没有新建 
$cookiename = 'VGOTCN_OnLineCount'; //cookie名称 
$onlinetime = 600; //在线有效时间,单位:秒 (即600等于10分钟) 
 
@$online = file($filename); //数据文件,如果没有新建 
$nowtime = time();  
$nowonline = array(); 
 
/* 
@ 得到仍然有效的数据 
*/ 
if(!empty($online)){ 
foreach($online as $line) { 
$row = explode('|',$line); 
$sesstime = trim($row[1]); 
if(($nowtime - $sesstime) <= $onlinetime) { //如果仍在有效时间内,则数据继续保存,否则被放弃不再统计 
$nowonline[$row[0]] = $sesstime; //获取在线列表到数组,会话ID为键名,最后通信时间为键值 
} 
} 
} 
/* 
@ 创建访问者通信状态 
使用cookie通信 
COOKIE 将在关闭浏览器时失效,但如果不关闭浏览器,此 COOKIE 将一直有效,直到程序设置的在线时间超时 
*/ 
if(isset($_COOKIE[$cookiename])) { //如果有COOKIE即并非初次访问则不添加人数并更新通信时间 
$uid = $_COOKIE[$cookiename]; 
} else { //如果没有COOKIE即是初次访问 
$vid = 0; //初始化访问者ID 
do { //给用户一个新ID 
$vid++; 
$uid = 'U'.$vid; 
} while (array_key_exists($uid,$nowonline)); 
setcookie($cookiename,$uid); 
} 
$nowonline[$uid] = $nowtime; //更新现在的时间状态 
 
/* 
@ 统计现在在线人数 
*/ 
$total_online = count($nowonline); 
 
/* 
@ 写入数据 
*/ 
if($fp = @fopen($filename,'w')) { 
if(flock($fp,LOCK_EX)) { 
rewind($fp); 
foreach($nowonline as $fuid => $ftime) { 
$fline = $fuid.'|'.$ftime."\n"; 
@fputs($fp,$fline);  
} 
flock($fp,LOCK_UN); 
fclose($fp);
PHP 相关文章推荐
php反弹shell实现代码
Apr 22 PHP
php mysql_real_escape_string函数用法与实例教程
Sep 30 PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
PHP stream_context_create()函数的使用示例
May 12 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 PHP
PHP 实现浏览记录并按日期分组
May 11 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 PHP
使用XHGui来测试PHP性能的教程
Jul 03 #PHP
编写PHP脚本过滤用户上传的图片
Jul 03 #PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 #PHP
深入理解PHP中的Streams工具
Jul 03 #PHP
列举PHP的Yii 2框架的开发优势
Jul 03 #PHP
PHP中异常处理的一些方法整理
Jul 03 #PHP
在PHP程序中使用Rust扩展的方法
Jul 03 #PHP
You might like
PHP新手上路(四)
2006/10/09 PHP
php获取当前网址url并替换参数或网址的方法
2010/06/06 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
python获取中文字符串长度的方法
2018/11/14 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
美术专业个人自我评价
2014/01/18 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
合作经营协议书范本
2014/04/17 职场文书