1

大家好,我有一个简单的基于会员的网站,用户可以在其中登录并拥有自己的个人资料。我希望能够在任何给定时间点知道有多少用户,或者更确切地说,哪些用户当前登录到我的网站。

它是 php 中一个简单的基于成员资格的系统。我理解的一种方法是在数据库中创建一个表并在那里存储登录详细信息和会话数据,但这可以通过其他方式完成,即无论如何要找出已启动的会话数以及所有在线的唯一用户。

4

3 回答 3

7

最好的方法是lastActivityTime为每个用户记录。当他们访问一个页面时,将时间记录在他们的数据库记录中。一旦你这样做了,运行一个简单的查询来计算lastActivityTimeCurrent Time.

因此,与其问“有多少用户登录”,不如问“有多少用户最近活跃”。

于 2009-06-10T21:51:07.333 回答
2

整个“监控活动会话”问题的关键问题是您(服务器)不一定完全控制会话。用户的浏览器可以在任何给定时间使会话过期,因此您无法保证任何时候都是活跃用户。

如果了解当前用户非常重要,那么在他们的用户表中添加一个指定时间戳的列,并在每次加载页面时更新该字段。如果该列过期不到一分钟,则可以认为它们处于活动状态。

你可以做的另一件事(在线聊天室经常使用来维护一个活跃的“聊天”列表)是在给定的时间间隔轮询一个页面(使用 AJAX),然后即使他们不刷新页面你仍然知道他们在那里。如果 ajax 请求没有在指定的时间间隔内到达,则用户已经离开,或者关闭了他们的浏览器。

于 2009-06-10T22:05:08.320 回答
0

我使用的一种方法是编写自定义会话处理程序 - php.net 上有很多示例。一旦会话数据在 SQL 中,您可以使用它做更多的事情。

于 2009-06-10T21:55:17.467 回答