2

我有一个基于 Joomla1.5 的系统。我运行分析器,发现 mysql_connect() 和 mysql_close() 这两个函数都被使用了 16 次。 我知道这两个功能和 Joomla 1.5 都已被社区弃用和强烈禁止。 我的系统面临性能问题,有时在高峰时段数据库连接线程变得太高(> 100)并且系统运行速度较慢。虽然我们有一个专用的 Windows 服务器。

Below is my DB server configuration:
Windows edition: Windows Server 2008 R2 Standard Service Pack 1
Processor: Intel(R) Xeon(R) CPU X5460 @3.16GHZ 3.16 GHZ (2 Processors)
Installed Memory(RAM): 8.00 GB
System type: 64-Bit Operating system

JDatabaseMySQL类的构造函数中使用了mysql_connect()函数。这意味着每当我们创建数据库对象时,这个 mysql_connect() 都会被执行并创建一个新的连接。

  • 我很想知道是否多次调用 mysql_connect() 函数会创建如此高的数据库连接线程问题?
  • 是否可以使用单个连接而不是多次启动对象?如果是,我该怎么做?
  • 用 mysqli_connect() 替换 mysql_connection() 会帮助我们提高系统性能吗?
  • Joomla 如何管理连接池?

请在不建议升级 Joomla 的情况下提供您的答案。

4

1 回答 1

3

Joomla!本身只连接到数据库一次。它使用单例模式来获取现有的数据库连接或在需要时创建它。

听起来您有一些自定义代码或 Joomla!扩展正在多次实例化 JDatabase 类。您不应直接实例化或处理该类,而应使用JFactory获取数据库对象,该对象在内部将获取现有对象或在需要时创建新对象:

$db = JFactory::getDBO();
于 2014-03-19T10:54:15.940 回答