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系统流量分析的程序
Oct 09 PHP
php入门学习知识点七 PHP函数的基本应用
Jul 14 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
使用PHP实现阻止用户上传成人照片或者裸照
Dec 25 PHP
php取得字符串首字母的方法
Mar 25 PHP
帝国cms目录结构分享
Jul 06 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
Oct 22 PHP
PHP代码维护,重构变困难的4种原因分析
Jan 25 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
CI框架附属类用法分析
Dec 26 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 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 session_start()问题解疑(详细介绍)
2013/07/05 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
php生成无限栏目树
2017/03/16 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
JavaScript 巧学巧用
2017/05/23 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
python中range()与xrange()用法分析
2016/09/21 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
Python csv文件记录流程代码解析
2020/07/16 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
自行车广告词大全
2014/03/21 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
欢迎新生标语
2014/10/06 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers