php实现用户在线时间统计详解

2015-01-24信息快讯网

php实现用户在线时间统计详解,需要的朋友可以参考下。

首先介绍一下所涉及的数据表结构,四个字段:
代码如下:
 
uid<int(10)> :用户id 
session_id<varchar(40)> :用户登录后系统产生的session_id,PHP可是使用session_id()函数获取 
login_time<int(10)> :登录时间 
logout_time<int(10)> :登出时间 

1、客户端定时发送请求到服务器端。实现方法是在用户登录后,将uid,session_id,login_time插入一条记录,然后在客户端js设定一个计时器,比如每10分钟向服务器端发送一个请求,以此来达到更新登出时间的目的,当然这个间隔时间设定的越短,数据可能会越准确,不过相应的系统的负载也会越高,这个可以根据实际情况设定一个合适的值。这种方法广泛应用于webgame上,因为webgame的几乎所有请求都是ajax请求,不用刷新页面,一旦刷新页面,这个计时器就失去了价值,这也是这个方法的局限性。

2、务器设定一个定时轮询的脚本。这个方法是在服务器端写一个定时执行的脚本,比如5分钟执行一次,根据数据库中的记录来判断每个会话的 session_id是否还存在于服务器上,如果存在就更新logout_time,不存在就跳过。这样也能比较准确的统计在线时间,不过缺点是需要有服务器的控制权,不然无法设定定时脚本,linux系统可以通过crontab实现,windows系统可以通过计划任务来完成。如果你只是买的虚拟主机,那么这个方法也同样不适合你。

3、在用户每次活动时更新一下登出时间。这样在用户不活动或者退出的时候,登出时间就自然而 然的存在于数据库里了,这也是本文着重讨论的方案。下面给出实现方法。
首先,在用户登录成功后,记录下其uid,session_id,并将现在时间作为登陆时间,现在时间 600s作为登出时间,插入数据库。
代码如下:
 
$uid = $_SESSION[uid] = $info[id]; 
$session_id = $_SESSION[session_id] = session_id(); 
$login_time = time(); 
$logout_time = time() 600; 
$sql = "INSERT INTO member_login (uid,session_id,login_time,logout_time) values($uid,$session_id,$login_time,$logout_time)"; 
mysql_query($sql); 

然后在用户每次活动,也就是每点击一个页面时,如果session存在也就是处于登录状态时,更新用户登出时间
代码如下:
 
if($_SESSION[uid]){ 
$uid = $_SESSION[uid]; 
$session_id = $_SESSION[session_id]; 
$logout_time = time() 600; 
$sql = "UPDATE member_login SET logout_time=$logout_time WHERE uid=$uid AND session_id=$session_id"; 
mysql_query($sql); 
} 

这种方法的优点是相对来说实现起来比较简单,能够适用于大多数的网站,没有额外的服务器需求,而且也可以比较准确的统计用户的在线时间。

缺点也很明显,增加了数据库的更新操作,增加了系统的负载,不过对于中小型网站来说应该不是问题。
使用php实现下载生成某链接快捷方式的解决方法
PHPMailer邮件发送的实现代码
用php实现选择排序的解决方法
PHP程序级守护进程的实现与优化的使用概述
PHP基础学习之流程控制的实现分析
PHP时间戳与日期之间转换的实例介绍
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
PHP生成随机用户名和密码的实现代码
php中存储用户ID和密码到mysql数据库的方法
PHP输出时间差函数代码
PHP跨时区(UTC时间)应用解决方案
mysql 查询指定日期时间内sql语句实现原理与代码
php获取用户IPv4或IPv6地址的代码
php中计算程序运行时间的类代码
php流量统计功能的实现代码
PHP中使用crypt()实现用户身份验证的代码
通过php快速统计某个数据库中每张表的数据量
php中3种方法统计字符串中每种字符的个数并排序
PHP 日,周,月点击排行统计
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
php 文件缓存函数
php下利用curl判断远程文件是否存在的实现代码
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
简单的PHP缓存设计实现代码
php利用iframe实现无刷新文件上传功能的代码
新浪微博API开发简介之用户授权(PHP基础篇)
PHP+MYSQL会员系统的登陆即权限判断实现代码
PHP将DateTime对象转化为友好时间显示的实现代码
PHP学习笔记 用户注册模块用户类以及验证码类
php中获得视频时间总长度的另一种方法
利用Ffmpeg获得flv视频缩略图和视频时间的代码
php将时间差转换为字符串提示
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
shopex中集成的站长统计功能的代码简单分析
PHP源代码数组统计count分析
PHP中对用户身份认证实现两种方法
php统计文件大小,以GB、MB、KB、B输出
php利用cookie实现访问次数统计代码
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
©2014-2024 dbsqp.com