谁在线会话统计

时间:2011-08-29 12:38:42

标签: php

我有一个名为“sessions”的MySQL表,其中包含session_id,user_id,ip_address和last_updated字段。

我有以下问题:

  1. 如果用户之前没有访问过该网站,或者用户导航到其他网页,更新“会话”表的最佳方法是什么?

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

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

  4. 我想显示有多少用户/来宾正在查看某个页面。什么是跟踪用户当前所在页面的最佳方式。

  5. 非常感谢任何帮助。一段时间以来,我一直在讨论上面的问题! ;)

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

  

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

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

  

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

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

  

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

如果他们有不同的网络浏览器,他们仍会有不同的会话。您如何在会话跟踪中使数据到期?要计算当前会话的总数,您只需在该跟踪表上执行SELECT COUNT(session_id)并过滤活动会话。由于用户并不总是主动告诉网站他们正在退出或离开,因此会话有一种难以跟踪到期的恶劣习惯。

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

  

我想显示有多少用户/来宾正在查看某个页面。什么是跟踪用户当前所在页面的最佳方式。

我猜您可以在跟踪表中添加current_page列(或任何您想要调用的列),以便在每次更新会话活动时使用用户的当前页面对其进行更新。 (同样,您在每个页面上重复使用相同的会话跟踪代码,对吧?)这样,只要用户访问您网站上的某个网页,就会记录下来。

对于会话超时,你仍然遇到同样的问题,如果某人只是走开或关闭他们的浏览器,那么你会将他们显示为在该页面上,直到他们的会话到期或他们超出你的过滤器(20分钟? ),但这是可以预期的。

答案 2 :(得分:0)

  1. 任何适合你的方式。我个人更喜欢SQL查询
  2. 显示登录表单,没有重定向
    • 带有count(*)
    • 的简单SQL查询
    • 现在使用会话统计表
    • 没关系。 2个浏览器意味着2个客户
  3. 会话表中的另一个字段。