SQL 社交 - 在线用户

Posted

技术标签:

【中文标题】SQL 社交 - 在线用户【英文标题】:SQL Social - Online Users 【发布时间】:2010-10-05 11:47:53 【问题描述】:

我有一张桌子

CREATE TABLE `tbl_users` (
  `user_id` int(11) NOT NULL auto_increment,
  `user_username` tinytext NOT NULL,
  `user_password` tinytext NOT NULL,
  `user_email` tinytext NOT NULL,
  `user_enabled` tinyint(4) NOT NULL default '1',
  `user_verified` tinyint(4) NOT NULL default '0',
  `user_verified_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `user_signup_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `user_login_date` datetime default NULL,
  `user_status` mediumtext NOT NULL,
  `user_online` tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (`user_id`)
)

每次用户访问网站时 user_login_date 都会更新,并且 user_online 设置为 1,这意味着他在线。

如果用户的最后一次访问是在 10 分钟前,我可以发送什么查询来将 user_online 切换到 0(离线)?

我已经这样做了

UPDATE tbl_users SET user_online = '0' WHERE (NOW() - user_login_date) > INTERVAL 10 minute

但这并没有帮助。

【问题讨论】:

这没有多大意义。这是否意味着如果我仍然处于活动状态,但在 11 分钟前登录,那么我不在线? 没有。我的意思是每次加载页面时,登录日期都会更新。 【参考方案1】:

您应该对常量进行计算,以便可以使用user_login_date 上的索引:

UPDATE tbl_users
SET user_online = '0'
WHERE NOW() - INTERVAL 10 MINUTE > user_login_date

【讨论】:

以上是关于SQL 社交 - 在线用户的主要内容,如果未能解决你的问题,请参考以下文章

《在线社交网络》

显示带有照片的在线用户的页面

使用 Facebook Javascript SDK 检查在线用户

C#webfrom+sql2005如何实时判定用户在线

记录 Django 网站的在线用户快照(postgresql 后端,nginx 网络服务器)

迈入泛 K 歌娱乐时代,即构推出 “社交 + K 歌” 融合方案!