2011-08-29 56 views
0

我有一个名为“sessions”的MySQL表,它包含session_id,user_id,ip_address和last_updated字段。谁在线会话统计信息

我有以下问题:

  1. 什么,如果用户没有浏览过这个网站更新“会话”表的最好办法,或者如果用户导航到不同的页面?

  2. 如果用户导航到需要他们登录的页面,在将页面重定向到登录页面之前,记住他们正在查看的页面的最佳方式是什么,以便它们可以返回到它登录后?

  3. 即使同一台计算机的用户使用不同的网络浏览器,如何计算当前在线成员/访客总数以及当天的总成员/访客总数?

  4. 我想显示有多少用户/客人正在查看某个页面。跟踪用户目前在哪个页面上的最佳方式是什么?

任何帮助,非常感谢。我一直在挠我的脑袋关于上述一段时间! ;)

回答

0
  1. 任何适合你的方式。 Personlly我更喜欢SQL查询
  2. 显示登录表单到位,没有重定向
    • 与COUNT(*)
    • noway与会议统计数据表中的普通SQL查询
    • 没关系。 2个浏览器意味着2个客户端
  3. 会话表中的另一个字段。
2

您可以根据上次请求的时间戳计算用户何时在线。我在我的社交网站中使用了UNIX时间戳。

2

如果用户之前没有访问过网站,或者用户导航到不同的页面,更新“会话”表的最佳方式是什么?

我不确定这里有什么问题。你现在如何更新表格?你在这个问题中提到的情况下跟踪什么?无论他们之前是否访问过该网站,他们仍然有一个会话。我认为无论他们浏览哪个页面,都使用相同的代码来维护会话信息,不是吗?

如果用户导航到需要他们登录的页面,在将页面重定向到登录页面之前,记住他们正在查看的页面的最佳方式是什么,以便它们可以返回登录后登录到它?

不记得了。将它作为参数传递给登录页面(通常在查询字符串上),然后在登录页面上检查该参数并将用户重定向到该页面,或者如果未指定参数,则将其重定向到默认页面。您可以使用urlencode()将值添加到查询字符串(和urldecode()以检索它)。

即使同一台计算机的用户使用不同的网络浏览器,我如何计算当前在线的成员/访客总数以及当天的总成员/访客数?

如果他们有不同的网页浏览器,他们仍然会有不同的会话。如何在会话跟踪中过期数据?要统计当前会话的总数,您只需在该跟踪表上执行SELECT COUNT(session_id)并筛选活动会话。会话有一个很难跟踪到期的恶习,因为用户并不总是主动告诉网站他们正在注销或离开。

跟踪当天的总会话类似,您只需在SQL查询中使用不同的过滤器。我想last_updated字段将成为过滤这两个查询的关键,要么根据活动用户的会话超时(20分钟?)进行过滤,要么按当天的用户进行日期过滤。

我想显示有多少用户/客人正在查看某个页面。跟踪用户目前在哪个页面上的最佳方式是什么?

我想你可以添加一个current_page列(或任何你想将它命名),以您的跟踪表与用户的当前页面每次更新他们的会话活动时间来更新它。 (同样,您在每个页面上重复使用相同的会话跟踪代码,对吗?)这样,用户每次访问您网站上的某个页面时,都会对其进行录制。

对于会话超时,您仍然会遇到同样的问题,如果有人刚刚离开或关闭浏览器,则会将其显示为在该页面上,直到其会话过期或者它们超出您的过滤器(20分钟?),但这是可以预料的。