错误:mysqli :: real_connect():( 08004/1040):连接太多[CodeIgniter v3]

时间:2015-05-24 13:44:50

标签: php codeigniter mysqli

我的网站存在一些问题,我收到错误的链接太多了。

屏幕截图:http://pasteboard.co/Hz7QJQR.png

Backtrace在我的__construct,模型函数list_slider和我get function上的模型中说出了我的错误:

这是我的控制器代码:

<?php 

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Beranda extends CI_Controller {

    public function __construct()
    {
            parent::__construct();
            $this->load->helper(array('form', 'url', 'html'));
            $this->load->model(array('slider_model', 'slider_2_model', 'group_model', 'contact_model'));
    }

    public function index()
    {
            $data['slider_data'] = $this->slider_model->list_slider();
            $data['slider_2_data'] = $this->slider_2_model->list_slider();
            $data['group_data'] = $this->group_model->list_group();
            $data['contact_data'] = $this->contact_model->list_contact();
            $data['title'] = 'Kitchenware Equipments & Utensiles - norwinskitchenware.com';
            $this->load->view('fend/view_beranda', $data);
    }

}

?>

这是我的模型 [更新]

<?php
    class Slider_model extends CI_Model {

        function list_slider()
        {

                $this->db->select('*');
                $this->db->from('slider');
                $query = $this->db->get();
                $this->db->close();
                return $query->result();
        }
     }
?>

我已设置'pconnect' => FALSEmysql.allow_persistent = OFF

我该怎么办?

谢谢

3 个答案:

答案 0 :(得分:2)

在你的模型中,你应该关闭你的功能的连接。

如果你在你的控制器中这样做

public function __destruct() {  
    $this->db->close();  
}  

您应按__destruct()

关闭它

答案 1 :(得分:0)

我们不需要像Sulthan Allaudeen那样使用$this->db->close()。因为CI&amp;当前有一些函数连接db在操作完成时有自动关闭的配置支持。

在codeigniter 3.1.2中,我在application/config/database.php中找到了 属性$db['default']['pconnect']是连接后的平均保持过程,或者我们可以解释CI的默认值&#34;是否使用持久连接&#34;。

此值的值应为FALSE

因为它的值是TRUE。您的代码访问一段时间并且可以访问数据库范围以限制数据库的连接(/etc/my.cnf中的max_connections)我们将无法再次连接并输出错误: mysqli::real_connect(): (08004/1040): Too many connections

答案 2 :(得分:0)

  1. 首先检查您的连接限制。

     SHOW VARIABLES LIKE 'max_connections';
    
  2. 第二次检查您当前的连接。

     SHOW STATUS LIKE 'max_used_connections';
    

解决方案:
暂时=> SET GLOBAL max_connections = 512;

永久=> /etc/my.cnf更改此设置(最大连接数= 512)

对于CentOS / RHEL 6:service mysqld restart

对于CentOS / RHEL 7:systemctl restart mysqld