利用php比较精确的统计在线人数的办法

利用php比较精确的统计在线人数的办法,注意这里所说的精确是指个数,如果需要精确在时间上,则需要根据实际情况调整代码中的有效时间。(自己没有写,从别人那拿过来的,先放着然后再研究)

<?php//author:www.scutephp.com$filename=‘online.txt‘;//数据文件$cookiename=‘VGOTCN_OnLineCount‘;//cookie名称$onlinetime=600;//在线有效时间,单位:秒 (即600等于10分钟)

$online=file($filename);//PHP file() 函数把整个文件读入一个数组中。与 file_get_contents() 类似,不同的是 file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败,则返回 false$nowtime=$_SERVER[‘REQUEST_TIME‘];$nowonline=array();//得到仍然有效的数据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;//初始化访问者IDdo{//给用户一个新ID$vid++;$uid=‘U‘.$vid;}while(array_key_exists($uid,$nowonline));setcookie($cookiename,$uid);}$nowonline[$uid]=$nowtime;//更新现在的时间状态//统计现在在线人数$total_online=count($nowonline);//写入数据if([email protected]($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);}}echo ‘document.write("‘.$total_online.‘");‘;
时间: 2024-10-08 12:47:47

利用php比较精确的统计在线人数的办法的相关文章

ASP.NET中利用Application和Session统计在线人数、历史访问量

先来简单说一下ASP.NET中的Application和Session 下图是我们非常熟悉的Web应用程序的结构: 在这张图中,Web服务器中运行的Web应用程序就是我们所说的Application,每个客户端与Web服务器之间建立的连接就可以看做是一个Session.比如现在服务器端运行的是一个论坛系统,那么现在这个正运行在服务器端的论坛系统的软件就可以看做Application,而每个在线的用户与之建立的连接就相当于一个Session. 那么很容易就会理解,Application是共享的,相

利用Zabbix监控Lync的实时在线人数

大家都知道windows性能监控一般依靠性能计数器, Lync实时在线人数统计就是SQL数据库实时连接数. 使用windows性能监视器对Lync的实时在线人数进行监控. 这个数值就是lync的实时在线人数 通过zabbix监控 为了方便zabbix监控我们需要找出这个性能参数值 我们将SQL服务器的性能计数参数都导出来 我们需要为SQL服务器新建一个监控项目 键值为: perf_counter[\SQLServer:User Settable(User counter 1)\Query] 再为

asp.net MVC 统计在线人数功能实现

今天开发一个设计一个统计在线人数的统计.实现方式是在MVC 中,用户次执行一个Action请求完成后,向数据表中插入一条用户心跳记录,统计在线人数则是根据该记录,30分钟内有记录的用户则为在线状态. 首先设计表心跳记录表结构MOdel 接下来添加 CheckACAttribute 类继承 ActionFilterAttribute基类,并在FilterConfig类中注册. public class FilterConfig    {        public static void Regi

【ASP.NET】——统计在线人数、历史访问人数

北大青鸟的视频中讲了很多很实用的例子,这是其中一个,在实现的过程中,遇到一些问题,但也都在老师的指导下和通过查阅资料解决了,感觉收获颇丰. 在做这个例子的时候发现:ASP.NET的Application和Session统计在线人数和历史访问人数时不准.明明已经关闭浏览器了,在线人数却没少,重新登录,历史人数也没增加.难道是我做错了,No.原因在这里. 首先,先简单说一下Application和Session. Application:应用程序类的对象.类比到这个程序,服务器端的统计人数程序就相当

Javaweb统计在线人数的小栗子

最近在学习Javaweb相关的内容(不黑不吹之前对web开发零基础),下面通过一个统计在线人数的小栗子讲讲Servlet监听器吧 开发环境 eclipse  tomcat 7 先说说这个小栗子的构思: 首先要考虑的就是通过什么方式能够统计在线人数?很容易想到可以通过session来统计在线人数为什么不是request呢?因为request在请求结束时即服务器返回资源时就被销毁了,也就是说request的作用域不足以用以统计在线人数.服务器在第一次接受一个用户请求时会给该用户分配一个session

shell脚本案例(四)利用 free 命令精确监控RAM的使用率

需求:利用free命令精确监控RAM的使用率具备知识:grep,free,awk,bc 脚本如下 [[email protected] scripts]# cat mem.sh #!/bin/bash - # free -m 代表着以M单位进行输出,如果内存足够大,那么您应该使用-g参数,容量以GB为单位输出. mem_total=`free -m | grep Mem | awk '{print $2}'` mem_used=`free -m | grep Mem | awk '{print

js 利用iframe和location.hash跨域解决办法,java图片上传回调JS函数跨域

奶奶的:折腾了我二天,终于解决了!网上有很多例子. 但跟我的都不太一样,费话不多说了,上图   上代码: IE ,firefix,chrome 测试通过 js :这个主页面,部分代码, function submitUpload(id){ $("#imgSrc" + id +"").attr("alt", "图片上传中--"); var imgID = id; if(id>0){ imgID = 1; } var for

利用servlet转发技术实现统计form表单中字母次数

需求是利用servlet转发技术,实现对html网页中用户输入的内容进行统计,统计每个字母出现的次数,忽略大小写.其中统计功能在一个servlet中,转发功能在另一个servlet中. 1.新建dynamic web project,命名为CounterCharacter 2.在webContent目录中新建index.html文件,设置form表单 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q

利用redis setbit和bitmap统计用户数

公司的统计系统接到一个需求,统计时间段内发生过某行为的用户总数.并且时间段的长度是可变的.公司业务用户数量巨大,而且统计系统是实时统计,所以数据的存储.计算效率都需要一个比较好的方案.下面是互联网上的一篇文章,利用redis bitmap. getspool.com的重要统计数据是实时计算的.Redis的bitmap让我们可以实时的进行类似的统计,并且极其节省空间.在模拟1亿2千8百万用户的模拟环境下,在一台MacBookPro上,典型的统计如“日用户数”(dailyunique users)