将调用mysql_connect()和mysql_close()16次导致高数据库连接?

时间:2014-03-19 10:45:35

标签: php performance joomla1.5 mysql-5.1

我有一个基于Joomla1.5的系统。我运行了探查器,发现mysql_connect()和mysql_close()两个函数都被使用了16次。 我知道这些功能和Joomla 1.5都被社区弃用并强烈禁止。 我的系统面临性能问题,有时在高峰时段,DB连接线程变得太高(> 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

mysql_connect()函数已在 JDatabaseMySQL 类的构造函数中使用。这意味着无论何时我们创建数据库对象,都会执行此mysql_connect()并创建一个新连接。

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

请提供您的答案,而不建议升级Joomla。

1 个答案:

答案 0 :(得分:3)

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

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

$db = JFactory::getDBO();