Php Joomla 1.5:如何在基于Joomla的intranet系统中查找并发/活动用户的数量

Php Joomla 1.5:如何在基于Joomla的intranet系统中查找并发/活动用户的数量,php,mysql,joomla,joomla1.5,Php,Mysql,Joomla,Joomla1.5,我有一个基于Joomla 1.5.10的内部网系统。有时我们会看到数据库线程的数量太多,性能下降。当我查看管理员部分时,我只能看到登录用户的数量。这些数字仅在1000-5000之间。执行以下查询以查找并发活动用户是否正确: select count(*) from jos_session; 例如,如果我执行上述查询并通过administrator检查登录用户,则数据如下: select count(*) from jos_session; = 2628 logged-in users visi

我有一个基于Joomla 1.5.10的内部网系统。有时我们会看到数据库线程的数量太多,性能下降。当我查看管理员部分时,我只能看到登录用户的数量。这些数字仅在1000-5000之间。执行以下查询以查找并发活动用户是否正确:

select count(*) from jos_session;
例如,如果我执行上述查询并通过administrator检查登录用户,则数据如下:

select count(*) from jos_session; = 2628
logged-in users visible from admin section = 1545

两个结果不匹配。另外,一次在我的系统中查找并发/活动用户的最佳方法是什么

我认为仅通过分析
\u会话
您将无法获得您需要/想要的信息。
如果您需要了解在后端看到的内容,请查看位于以下位置的模块:

administrator\modules\mod\u status\mod\u status.php

这里列出了所有查询。重要的是要了解
guest
是一个未经身份验证的用户,也是一个客户端id(前端(0)与后端身份验证(1))

事情是这样的:

  • jos_session
    存储所有未过期的会话
  • 您可能有一个SSO身份验证机制,这意味着如果用户关闭并再次打开浏览器,可能会获得一个新的会话id。拥有比用户更多的
    活动
    会话,这表明会话过期时间设置为高
只需对jos_会话执行一个查询:

SELECT `username`, count(username) FROM `jos_session` WHERE 1 GROUP BY `username`
如果太多用户的
计数值太大
,请缩短会话生存期

通过这种方式,您将获得一个更真实的数字,即在系统中某个时间有多少用户,但这只是一个会话,它不会向您提供关于有多少用户在网站上实际执行某个操作的确切信息

用通俗易懂的英语来说,这就像是在说:我知道,在过去的[填写会话生命周期]分钟内,有1500名用户打开了内部网

您需要了解DB线程是如何生成的,以及为什么该值很高

基本上,引用“
到服务器的链接将在脚本执行结束后立即关闭,除非它通过显式调用mysql_close()提前关闭。

可能值得检查一下,是否有JavaScript之类的东西通过AJAX请求轮询服务器以获取一些信息,即使用户刚刚打开浏览器,这些信息也可能会运行


希望这能有所帮助。

非常感谢瓦伦丁的澄清。在我的系统中,没有为来宾用户提供服务。只有在登录后,用户才能进入应用程序。另外,当我执行您提供的查询时,我发现只有少数用户的计数>=4。最多用户只有1-2个计数。即使执行此脚本,在管理部分(1966)中显示的登录用户与执行上述查询(1579)后获取的记录数之间也存在差异。如何在我的应用程序中管理会话生存期?在Jooma->Global Configuration->System->session Settings(应该与1.5中的设置类似)中。谢谢,我得到了设置,发现会话生存期为120分钟。请升级到1.5.26+应用最新补丁,1.5.10是非常不安全的