如何查找创建的会话总数,即登录用户数?

时间:2009-06-10 21:49:15

标签: php session membership

大家好我有一个简单的会员制网站,用户登录并拥有自己的个人资料。我希望能够在任何给定的时间点告诉我有多少用户或者哪些用户当前登录到我的网站。

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

3 个答案:

答案 0 :(得分:6)

执行此操作的最佳方法是为每个用户记录lastActivityTime。当他们访问页面时,请在其db-record中记录时间。完成后,运行一个简单的查询来计算距离lastActivityTime不到5分钟Current Time的所有记录。

因此,您不是要问“有多少用户登录”,而是询问“最近有多少用户处于活动状态。”

答案 1 :(得分:2)

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

如果了解当前用户非常重要,则在其用户表中添加一列指定时间戳,并在每次加载页面时更新该字段。如果该列的过时时间少于约一分钟,则可将其视为活动状态。

你可以做的额外事情(在线聊天室用来维护一个活跃的'聊天'列表),是以给定的间隔(使用AJAX)轮询一个页面,然后即使他们不刷新页面你还知道他们在那里。如果ajax请求未按指定的时间间隔到达,则用户已离开,或关闭其浏览器。

答案 2 :(得分:0)

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