如何在Stack Overflow上编写“Last Seen”逻辑

时间:2010-07-06 17:48:22

标签: user-tracking

我正在开发一个与上次看到用户时具有类似SO逻辑的应用程序。我遇到了一个概念问题,我希望你们中的一些人可以帮助我。

所有活动都记录在数据库的ActivityLog表中

当登录用户访问该站点并创建新会话时,我使用UserID和一些非常通用的信息更新活动日志。当他们创建新记录,更新他们的个人资料等时会发生同样的事情。

我遇到的问题是这个。

如果我使用最新的活动项目,然后导航到我的个人帐户页面,“Last Seen”显示为1秒前因为我刚刚在会话开始时点击数据库...这不好,因为我想要看看我在那里“最后”,而不是“我现在”在那里。

但是,如果我使用Skip(1).Take(1)来获取数据库中的第二条记录,那么当其他人查看我的个人资料时,我可能已“正好”登录...他们会看到我在说一周前而不是今天。

你会用什么样的逻辑来吃蛋糕呢?

我正在使用ASP.NET MVC2和Linq to SQL,但我认为这个问题与语言无关。

3 个答案:

答案 0 :(得分:3)

我会做的(只是为了避免一个大的逻辑循环)将添加两个字段。 current_seenlast_seen。登录时将current_seen移至last_seen并将current_seen设置为当前时间戳。然后将last_seen显示为“最后在XX / XX / XXX上看到”。

答案 1 :(得分:3)

听起来您可以显示当前用户的第二个最新记录,并且对于所有其他用户显示最新记录。

答案 2 :(得分:2)

一个值得关注的地方是OSQA(开源q&系统)的源代码 -

http://www.osqa.net/

是的,它看起来很像StackOverflow(至少可以说)。