#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;
Это приведет к тому, что ваш класс базы данных не будет инициализироваться (включая подключение к серверу) при создании экземпляра, вместо этого это произойдет при выполнении первого запроса.
Смотрите страницу конфигурации базы данных