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 12 PHP
JS 网站性能优化笔记
May 24 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
PHP 第一节 php简介
Apr 28 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
9段PHP实用功能的代码推荐
Oct 14 PHP
yii分页组件用法实例分析
Dec 28 PHP
php pdo oracle中文乱码的快速解决方法
May 16 PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 PHP
PHP实现对数组分页处理实例详解
Feb 07 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 PHP
详解Laravel服务容器的优势
May 29 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浮点数知识
2015/05/13 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
JavaScript 加号(+)运算符号
2009/12/06 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
Python检测生僻字的实现方法
2016/10/23 Python
高效使用Python字典的清单
2018/04/04 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
python 连续不等式语法糖实例
2020/04/15 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
餐饮加盟计划书
2014/01/10 职场文书
《童趣》教学反思
2014/02/19 职场文书
初三开学计划书
2014/04/27 职场文书
天坛导游词
2015/02/02 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
Python+Appium自动化测试的实战
2021/06/30 Python
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android