PHP和SQL社交网络 - 在线用户

时间:2010-10-04 14:17:07

标签: php sql social-networking

我想在我的网站上设置在线检测。

我的用户表中有一行存储了最后一次登录日期时间。每次用户访问该网站时,他的登录日期都会更新,用户在线行设置为 1(1 - 在线,0 - 离线)

如果最后一次登录是10分钟或更长时间,如何将在线行更改为 0(离线)?目的是找出日期之间的差异。

4 个答案:

答案 0 :(得分:3)

每10分钟一次?cronjob?

UDPATE users SET online = 0 WHERE login_date > (NOW() - INTERVAL 10 minute);

答案 1 :(得分:0)

只是为每个用户添加一个last_seen时间戳到那一行,这样当你用户进行authed检查时你可以更新时间

if(logged_in())
{
    update_user();
}


function update_user()
{
    //UPDATE users SET last_seen = unix_timestamp() WHERE uid = X;
}

然后你可以为你做的用户:

SELECT * FROM users WHERE last_seen > (unix_timestamp()-300)

最后5分钟。

答案 2 :(得分:0)

如果要显示最近10分钟内在线的用户,那么最好的方法是在sql查询中包含日期时间条件。

答案 3 :(得分:0)

将上次登录时间保存为时间戳,然后您可以轻松地将其与当前时间进行比较,并告知已经过了多长时间。

根据用户表的大小,您可以在每次有人呼叫您的网站时检查那些仍然在线的人。

另一种方法是将活动用户存储在存储桶中,标记为上次登录时间,然后您可以轻松地重置超过10分钟的存储桶中的所有用户。