我的网站有一些问题,我得到一个错误,太多的连接。
截图:http://pasteboard.co/Hz7QJQR.png
回溯说我的错误在我的__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);
}
}
?>
<<p>,这是我的模型strong>(更新): <?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' => FALSE
和mysql.allow_persistent = OFF
我该怎么办?
谢谢
在你的模型中,你应该关闭你的函数的连接。
如果你在控制器中做
public function __destruct() {
$this->db->close();
}
应按__destruct()
关闭
-
先检查你的连接限制。
SHOW VARIABLES LIKE 'max_connections';
-
第二次检查你当前的连接
SHOW STATUS LIKE 'max_used_connections';
解决方案:
暂时=比;SET GLOBAL max_connections = 512;
永久=比;/etc/my.cnf change this (max_connections = 512)
For CentOS/RHEL 6: service mysqld restart
For CentOS/RHEL 7: systemctl restart mysqld
我们不需要像Sulthan Allaudeen那样使用$this->db->close()
。因为CI &当前一些连接数据库的函数已经配置支持操作完成后自动关闭。
在codeigniter 3.1.2我发现在application/config/database.php
属性$db['default']['pconnect']
是连接后的平均保持过程,或者我们可以像CI的默认值"是否使用持久连接"一样解释。
这个值应该是FALSE
。
因为如果它的值是TRUE
。您的代码访问了一段时间,并访问数据库达到限制数据库连接(/etc/my.cnf
中的max_connections),我们将无法再次连接并将输出错误:mysqli::real_connect(): (08004/1040): Too many connections