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模板之Phpbean的目录结构
Jan 10 PHP
php中get_headers函数的作用及用法的详细介绍
Apr 27 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
PHP中获取时间的下一周下个月的方法
Mar 18 PHP
php自定义hash函数实例
May 05 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
PHP实现简易blog的制作
Oct 24 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
php生成微信红包数组的方法
Sep 05 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
Sep 05 PHP
基于ThinkPHP删除目录及目录文件函数
Oct 28 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+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
初识Node.js
2015/03/20 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
python特性语法之遍历、公共方法、引用
2018/08/08 Python
简单了解python代码优化小技巧
2019/07/08 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
python实现邮件发送功能
2019/08/10 Python
python框架django项目部署相关知识详解
2019/11/04 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
幼儿园门卫制度
2014/01/29 职场文书
大学生在校学习的自我评价
2014/02/18 职场文书
高三学习决心书
2014/03/11 职场文书
学生检讨书范文
2014/10/30 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
MySQL开启事务的方式
2021/06/26 MySQL