У меня есть некоторые проблемы на моем сайте, у меня ошибка слишком много соединений.
Скриншот: http://img.ruphp.com/php/Hz7QJQR.png
Backtrace сказал мою ошибку в моей __construct
, функции model 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); } } ?>
и это моя модель [UPDATE] :
<?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()
Нам не нужно использовать $this->db->close()
как говорит Sulthan Allaudeen. Поскольку CI и некоторые функции connect db в настоящее время имеют поддержку конфигурации для автоматического закрытия при завершении манипуляции.
В кодеигнитре 3.1.2 я обнаружил в свойстве application/config/database.php
$db['default']['pconnect']
– это средний процесс удержания после подключения или мы можем объяснить, как значение по умолчанию для CI «Использовать постоянное соединение ».
Это значение должно иметь значение FALSE
.
Потому что если значение TRUE
. Доступ к вашему коду через некоторое время и доступ к базе данных для ограничения соединения базы данных (max_connections в /etc/my.cnf
), мы не сможем снова подключиться и вывести ошибку: mysqli::real_connect(): (08004/1040): Too many connections