CodeIgniter — подключаться к базе данных только при наличии запроса для выполнения

#php #mysql #codeigniter

#php #mysql #codeigniter

Вопрос:

На данный момент я загружаю класс базы данных в свою автозагрузку, которая автоматически создает соединение с mysql. Если запросов нет, соединение все равно будет создано.

Для повышения производительности я хочу подключаться к mysql только в том случае, если запрос был выполнен.

Какой был бы наилучший способ добиться этого?

Я подумываю о написании модельной функции, через которую выполняются все запросы, которая определяет, была ли подключена база данных или нет, и просто вызывает, $this->load->database() если нет, перед запуском $this->db->query() .

Проблема в том, что мне пришлось бы изменить все мои $this->db->query() ссылки в моем коде, что является проблемой.

В идеале я хотел бы расширить $this->db->query() функцию для поддержки этого.

Есть идеи?

Комментарии:

1. Это было бы полезно, только если у вас много страниц, которым не нужен запрос к БД. Или если вы интенсивно используете кэширование

2. Не уверен, в чем здесь будет преимущество, пока у вас есть подключение к базе данных, оно в любом случае активно только при использовании. Это похоже на автозагрузку html, URL и других библиотек. Они не снижают производительность, пока не будут вызваны для использования.

Ответ №1:

Вы можете изменить свойство autoinit конфигурации вашей базы данных

 $db['mydb']['autoinit'] = false;
  

Это приведет к тому, что ваш класс базы данных не будет инициализироваться (включая подключение к серверу) при создании экземпляра, вместо этого это произойдет при выполнении первого запроса.

Смотрите страницу конфигурации базы данных