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 相关文章推荐
phpmyadmin操作流程
Oct 09 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
Jun 02 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 PHP
PHP中使用imagick生成PSD文件缩略图教程
Jan 26 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
yii用户注册表单验证实例
Dec 26 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
PHP自动补全表单的两种方法
Mar 06 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 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/11/19 PHP
php md5下16位和32位的实现代码
2008/04/09 PHP
php中使用临时表查询数据的一个例子
2013/02/03 PHP
优化PHP代码技巧的小结
2013/06/02 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
浅谈vue父子组件怎么传值
2018/07/21 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
python分布式编程实现过程解析
2019/11/08 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
基于python3生成标签云代码解析
2020/02/18 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
离婚代理词范文
2015/05/23 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
Pytorch 如何实现常用正则化
2021/05/27 Python