我有一个基于 Joomla 1.5 的 Intranet 系统。该系统上的用户负载在 100-6k 之间变化。我们对该系统进行了很多定制,并且仅使用 Joomla 核心功能。我知道Joomla 1.5是一个过时的系统,需要升级到较新的版本或至少1.5.26。但是,我们已经升级了 PHP 和 apache,并管理了安全漏洞。因此,升级 Joomla 不是这个问题的问题。
我们已经看到 Joomla 使用 jos_session 表来管理应用程序中的 session 。每个用户的每次点击都会在 jos_session 表中执行更新查询。因此,我可以看到 jos_session 上的多个插入(对于新 session )更新查询(更新时间戳)正在执行。
- Joomla 这样做有什么具体原因吗?
- 是否有更好的替代解决方案来消除单个表上的多次插入/更新?
最佳答案
Joomla 实现了自己的自定义 session 管理(而不是使用 PHP 提供的)。它的 session 管理是通过数据库表实现的。
每次用户加载您的页面时,都会创建或更新 session (如果已经存在)。这就是为什么您会看到该表上的所有事件。
默认情况下,Joomla 将使用 MyISAM 引擎作为 job_session 表。这会导致很多表崩溃,所以我不得不将其更改为 InnoDB,这解决了崩溃问题。它还可能会提高性能,但无法对此发表评论。
在 Joomla 后端:站点 -> 全局配置 -> 系统,您可以将 session 处理程序设置为“无”,这将停止使用数据库,并且默认使用 PHP session 。但并不是每个人都建议您这样做。您可以自己进行测试,看看哪种方法更适合您。
当然,在开始使用设置进行测试之前,请确保您有网站的备份。
关于mysql - Joomla session 表中的多次插入/更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20951974/