MySQL& CodeIgniter 3:连接错误太多

时间:2015-05-23 09:58:17

标签: php mysql codeigniter

所以我在这里遇到一点问题,我使用的是CodeIgniter 3。 有时我试图访问我的网站。 连接错误太多了。

这是我的database.php

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'testing',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

解决此问题的任何正确代码?

感谢您的帮助:)

2 个答案:

答案 0 :(得分:0)

关闭mysql.allow_persistent,因为它已启用。然后它一次又一次地创建连接

//Set mysql.allow_persistent ON to Off
mysql.allow_persistent = Off
  

注意:如果启用了持久连接,则表示不关闭   脚本的执行结束

另请阅读Too many connections

答案 1 :(得分:0)

我最近被我的一个控制器最大化了与数据库的连接这一事实感到难过。添加一些调试日志记录显示它正在为每个查询创建一个新连接,并将它们保持打开状态,因此它们很快就会耗尽。我的其他控制器都没有这样做,他们都为每个请求使用了一个连接。

经过多次讨论之后,最终解决它的问题是在$this->load->library('session');之后将$this->load->database();添加到控制器的构造函数中。我所有的其他控制器都有,但这个特殊的控制器没有做任何与会话相关的东西,所以我没有打扰它。但由于某种原因,似乎有必要加载它以便在请求的生命周期内使用单个数据库连接。

这是在CodeIgniter 2.x中,但3.x代码中的大部分都是相同的,所以它也适用于那里。