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 动态多文件上传
Jan 18 PHP
国外PHP程序员的13个好习惯小结
Feb 20 PHP
PHP操作MySQL事务实例
Nov 05 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
PHP实现网站访问量计数器
Oct 27 PHP
Thinkphp5+uploadify实现的文件上传功能示例
May 26 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
PHP扩展类型及安装方式解析
Apr 27 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中使用BigMap实例
2015/03/30 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
offsetParent 算法分析
2010/04/05 Javascript
JavaScript 面向对象的 私有成员和公开成员
2010/05/13 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
Vue2.x中的Render函数详解
2017/05/30 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
python实现随机梯度下降法
2020/03/24 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
django-csrf使用和禁用方式
2020/03/13 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
会计师事务所审计实习自我鉴定
2013/09/20 职场文书
服装电子商务创业计划书
2014/01/30 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
理财计划书
2014/08/14 职场文书
党员公开承诺书2015
2015/01/21 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
父亲节感言
2015/08/03 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技