【问题标题】:MySQL & CodeIgniter 3 : Error too many connectionMySQL & CodeIgniter 3:错误太多连接
【发布时间】:2015-05-23 09:58:16
【问题描述】:

所以我这里有个小问题,我使用的是 CodeIgniter 3。 有时当我尝试访问我的网站时。 连接太多会出错。

这是我的数据库.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
);

有解决这个问题的正确代码吗?

感谢您的帮助:)

【问题讨论】:

  • 你应该关闭连接到所有页面的末尾

标签: php mysql codeigniter


【解决方案1】:

关闭mysql.allow_persistent,因为如果它处于打开状态。然后它一次又一次地创建连接

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

注意:如果 Persistent connections 开启,则不会关闭 脚本的执行结束

另请阅读Too many connections

【讨论】:

  • 所以.. 我应该告诉服务器管理员关闭 mysql.allow_persistent 吗?
  • 是的,或者你也可以在你的mysql.ini文件中设置,如果你有访问权限的话!!
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2010-11-15
    • 2017-10-29
    • 2015-03-24
    • 2013-05-07
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2015-03-01
    相关资源
    最近更新 更多