判断会员在线方法探讨
上一篇 /
下一篇 2007-11-06 18:31:42
/ 个人分类:技术的
在我们好多网站运营中,特别是一些web2.0的用户之间交互的网站,通常需要实时获得用户是否在线.通常我们用的方法经常是30分钟无动作即作离线处理,因为前面项目的关系,我用了这种方法.
1,在数据库中建立如下的user表
CREATE TABLE user ( id int(11) autoincreatment, name varchar(11), password varchar(64), isonline enum(0,1), onlinetime int(11), offlinetime int(11) )primary key id; |
2,在global.php中引入文件isOnline.php.即用户一有动作,就触发该文件:
<?php session_start(); if(!is_login()) { exit('未登录'); } /** 在此更新在线时间 */ $updateOnLineTimeSql = "update user set ōnlinetime=time() where id = $_SESSION['id']"; mysql_query($updateOnlineTimeSql); |
3.设置linux的cron,并将其指向clearOnlineUser.php,设置为5分钟执行一次,该php文件内容如下:
<?php session_start(); if(!is_login()) { exit('未登录'); } /** 用当前时间戳与表中onlinetime字段做差,如果大于30分钟,即已离线,否则为在线. */ $getOnLineTimeStampSql = "select onlinttime from user where id=$_SESSION['id']"; $getOnLineTimeStampQuery = mysql_query($getOnLineTimeStampSql); $getOnLineTimeStampRes = mysql_fetch_array($getOnLineTimeStampQuery); $onLineTimeStamp = $getOnLineTimeStampRes['onlinetime']; if(time()-$onLineTimeStamp>30*60) { //已退出,将数据库中的isonline置为0 } else { //他还是在线的. } |
4,这样就可以根据数据库中的isonline字段较为准确地判断用户是否在线了.
相关阅读:
- Database object (xiaotian_ls, 2007-11-02)
- 嘿嘿,,收藏的一个比较规范的验证码类 (maysen, 2007-11-02)
- php命令行参数详解 (fengyun, 2007-11-04)
- apache Rewrite 二级域名设定 (xiaotian_ls, 2007-11-05)
- Apache 重写规则的常见应用 (rewrite) (xiaotian_ls, 2007-11-05)
- substr,strtotime,explode,preg_split,split,preg_match,ereg比较 (beyond_dream, 2007-11-05)
- 入门:JavaScript常用内建对象 (xiaotian_ls, 2007-11-05)
- 缓存技术详谈—php (xiaotian_ls, 2007-11-05)
- PHP 強制下載檔案, 而不讓程式開啟 (liexusong, 2007-11-06)
- 使用服务数据对象简化 PHP 中的 XML 处理 (xiaotian_ls, 2007-11-06)
导入论坛
收藏
分享给好友
管理
举报
TAG:
php
在线会员
在线用户
技术的