我想在我的网站上设置在线检测。
我的用户表中有一行存储了最后一次登录日期时间。每次用户访问该网站时,他的登录日期都会更新,用户在线行设置为 1(1 - 在线,0 - 离线)。
如果最后一次登录是10分钟或更长时间,如何将在线行更改为 0(离线)?目的是找出日期之间的差异。
答案 0 :(得分:3)
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分钟的存储桶中的所有用户。