用户似乎总是在线?

时间:2014-06-23 11:17:38

标签: mysql phpmyadmin

我会定期更新每个用户在某些操作上的最后一项活动,以便以后能够吸引在线用户。但是,当我运行下面的查询时,它总是得到一个结果,好像用户在线:

SELECT * FROM info WHERE last_activity + INTERVAL 30 SECOND > NOW() and for_whom = '1461' and is_deleted=0

我尝试将last_activity列值更改为较低的时间,但始终返回该行。 ?

3 个答案:

答案 0 :(得分:1)

确保您的Web服务器和数据库服务器具有相同的系统时间。

尝试SELECT NOW()检查数据库服务器时间。

答案 1 :(得分:1)

请确保您使用MySQL NOW()更新上一个活动,而不是来自其他来源的明确日期时间。

此外,如果您在info (for_whom, is_deleted, last_activity)上创建索引并稍微重写查询,您的查询会快得多:

SELECT  *
FROM    info
WHERE   for_whom = 1461
        AND is_deleted = 0
        AND last_activity > NOW() - INTERVAL 30 SECOND

答案 2 :(得分:0)

您应该检查last_activity日期时间的 UTC部分。你可能会在那里找到惊喜。 此处描述的其他措施可能有所帮助(例如日期时间同步)