目前PHP中的在线访问者逻辑

时间:2011-12-14 13:45:08

标签: php database session caching optimization

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

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

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

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

聚苯乙烯。请注意,我将每1-5分钟运行一次该功能,获取金额,将其存储为缓存。 5分钟后,缓存将再次被替换,依此类推。因此,如果您认为这是最专业的方式,数据库连接将是可能的。

1 个答案:

答案 0 :(得分:2)

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

我在用户数据库(timestamp / datetime)中的“last_used”字段和“heartbeat”函数(jscript)的组合中做了类似的事情,它经常发送“我还活着” - 命令到服务器(每x秒),然后更新此last_used-field。它不是一个高流量的站点,但它的工作非常可靠。

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

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

您不需要用户表,也可以使用会话表。这样的机制也可以用于其他功能,例如为用户提供动态的新消息等。