您的位置:首页 > 其它

判断会员在线方法探讨

2007-11-07 10:45 127 查看
在我们好多网站运营中,特别是一些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字段较为准确地判断用户是否在线了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: