【问题标题】:How to find No. of active sessions on my webpage如何在我的网页上查找活动会话数
【发布时间】:2011-12-10 14:40:43
【问题描述】:

我需要查看网页上所有处于活动状态的会话,经过一番搜索后,我发现了一个包含在 php 5.4 中的函数session_status(),我猜它告诉了活动会话。但直到现在我还无法弄清楚如何使用这个功能。任何人都可以通过示例告诉如何使用此功能。我的系统上安装了 php 5.4,所以这不是问题。

【问题讨论】:

  • PHP(5.4 或任何版本)没有内置函数session_status()。您在哪里找到这些信息?
  • @Jordan 我在 stackoverflow 上读到了 stackoverflow.com/questions/3788369/…
  • 嗯,这就解释了为什么它还没有被记录——5.4 仍处于预发布阶段。但是,您似乎误解了此功能的目的。它不会告诉您有关所有“活动”会话的任何信息——它只会告诉您当前会话的状态,即属于正在查看页面的用户的会话。
  • 是什么让您的问题与可能重复的Find Number of Open Sessions 不同?

标签: php


【解决方案1】:

据我所知,没有自动的方法可以做到这一点。一种简单的方法是查看正在写入 PHP 会话的 tmp 目录,并计算其中有多少文件(假设会话存储在文件中)。

【讨论】:

  • 这可以工作,但请记住,在用户关闭浏览器或导航到其他地方后,该文件仍会存在一段时间。您需要将会话设置为在很短的时间后过期以使其准确。然后,您必须在页面仍然打开时保持这些会话处于活动状态,这可以通过每 x 秒重复一次 ajax 调用来完成。
【解决方案2】:

关键是不可能看到所有处于活动状态的会话,您无法判断会话是否处于活动状态。如果用户关闭页面而没有做任何注销等操作,会话信息(会话文件或其他存储)仍然保留在服务器中,等待会话 GC 清除。

【讨论】:

    【解决方案3】:

    这是一种痛苦,但这是可能的。除了将会话文件计数为 endyourif 之外,您还可以让所有活动会话每 30 秒左右(通过 ajax)更新其 IP 地址或用户 ID 以及数据库表中的时间戳。然后,您可以随时查询在前 x 秒内有多少用户处于活动状态。

    这可能会比平时更快地消耗资源,因此如果您获得大量流量,请小心。使用内存表可能会有所帮助。此外,您可能希望每隔一段时间运行一次 cron 作业以清除不再需要的条目,例如超过 15 分钟的任何条目。

    【讨论】:

      【解决方案4】:

      PHP.net -> Session_Status PHP 中不存在此功能,必须是此人的自制功能。我认为如果没有其他程序,如 shell 脚本或类似的东西,这是不可能的。

      你上面的链接,看起来像你必须安装 manuell 的 php5.4 扩展。

      【讨论】:

      • 我的系统上安装了 php 5.4 并且功能正在运行,并且没有显示任何错误。所以函数存在
      • 那么 PHP.NET 这可能还没有更新。我认为这是不可能的,PHP 中的查询会话。我认为,除非您在会话后查看此文件夹,但关闭的会话不会立即删除。如果你找到另一种我很兴奋的方式?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      相关资源
      最近更新 更多