【问题标题】:Currently online visitors logic in PHP目前 PHP 中的在线访问者逻辑
【发布时间】:2012-01-20 06:54:43
【问题描述】:

这可能是一件非常容易的事情,但我对此感到很困惑。

基本上,我想了解当前浏览我网站的人数。问题是,我无法计算会话数。其中许多是为不同目的而创建的。 (例如 $_SESSION['age'] 用于登录的用户。)

此外,还有“logged_in”和“not_logged_in”的人。

简而言之,我如何才能以最专业的方式统计我网站中的用户?

附言。请注意,我将每 1-5 分钟运行一次该函数,获取金额,将其存储以用作缓存。 5 分钟后,缓存将再次被替换,以此类推。因此,如果您认为这是最专业的方式,则可以使用 db 连接。

【问题讨论】:

标签: php database session caching optimization


【解决方案1】:

手头的一个问题是,您的 PHP 不知道您的用户何时关闭浏览器。

我使用用户数据库中的“last_used”字段(时间戳/日期时间)和“心跳”功能(jscript)的组合做了类似的事情,它定期发送“我还活着” -命令到服务器(每 x 秒),然后更新这个 last_used-field。它不是一个高流量的网站,但它的工作非常可靠。

然后只统计数据库中当前心跳的用户数量:

SELECT COUNT(*) 
FROM your_user_table 
WHERE last_used > TIMESTAMPADD(NOW(), INTERVAL -30 SECOND)

您不需要用户表,您也可以使用会话表。这种机制也可以用于其他功能,例如即时向用户提供新消息等。

【讨论】:

  • 我相信我将连接到 PHP 页面,获取结果,清理当前 DIV 并将 DIV 替换为 PHP 页面提供的信息。像这样的JS如何做心跳功能?
  • 嗯,这取决于你想使用什么技术。这是处理您经常使用的问题的一种方法。如果您的应用程序没有 JScript,那么您最终会遇到我描述的问题。如果您使用广泛的 JScript 库(JQuery、Mootools 等),那么有很多示例可以做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
相关资源
最近更新 更多