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在Web开发领域的优势
Oct 09 PHP
PHP4 与 MySQL 数据库操作函数详解
Dec 06 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
Session服务器配置指南与使用经验的深入解析
Jun 17 PHP
php实现图片缩放功能类
Dec 18 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 PHP
php发送http请求的常用方法分析
Nov 08 PHP
PHP rmdir()函数的用法总结
Jul 02 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 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一些公用函数的集合
2008/03/27 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
PHP 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
php如何获取文件的扩展名
2015/10/28 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
python实现双色球随机选号
2020/01/01 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
营业员个人总结的自我评价
2013/10/25 职场文书
文明青少年标兵事迹材料
2014/01/28 职场文书
领导党性分析材料
2014/02/15 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书