【发布时间】:2010-10-04 14:17:07
【问题描述】:
我想在我的网站上设置在线检测。
我的用户表中有一行存储了上次登录日期时间。每次用户访问该站点时,他的登录日期都会更新,并且用户在线行设置为 1(1 - 在线,0 - 离线)。
如果上次登录是在 10 分钟或更长时间前,如何将在线行更改为 0(离线)?目的是找出日期之间的差异。
【问题讨论】:
标签: php sql social-networking
我想在我的网站上设置在线检测。
我的用户表中有一行存储了上次登录日期时间。每次用户访问该站点时,他的登录日期都会更新,并且用户在线行设置为 1(1 - 在线,0 - 离线)。
如果上次登录是在 10 分钟或更长时间前,如何将在线行更改为 0(离线)?目的是找出日期之间的差异。
【问题讨论】:
标签: php sql social-networking
cronjob 每 10 分钟一次?
UDPATE users SET online = 0 WHERE login_date > (NOW() - INTERVAL 10 minute);
【讨论】:
只是给每个用户添加一个 last_seen 时间戳到那里,这样当你做你的用户被验证时你可以更新时间
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 分钟。
【讨论】:
如果要显示最近 10 分钟内在线的用户,那么最好的方法是在 sql 查询中包含日期时间条件。
【讨论】:
将上次登录时间保存为时间戳,然后您可以轻松地将其与当前时间进行比较,并了解自那时以来已经过去了多少时间。
根据您的用户表的大小,您可以在每次有人访问您的网站时检查那些仍然在线的人。
另一种方法是将活动用户存储在存储桶中,并标有上次登录时间,然后您可以轻松重置存储桶中超过 10 分钟的所有用户。
【讨论】: