Где и когда открыть соединение с базой данных

new и delete операторы могут воздействовать на классы и структуры, тогда как malloc и free только работа с блоками памяти, которая должна быть брошена.

Используя new/delete поможет улучшить Ваш код, поскольку Вы не должны будете бросать выделенную память к необходимой структуре данных.

15
задан Felix Andersen 14 July 2009 в 16:51
поделиться

4 ответа

Поскольку соединения довольно дороги, как указывали другие, я бы рекомендовал использовать метод «ленивого соединения» на уровне вашей базы данных. Если вы эффективно структурировали свое приложение, логика вашего приложения не должна беспокоиться о том, когда соединения открываются и закрываются, так как это будет инкапсулировано на уровне базы данных. Уровень базы данных, когда его просят выполнить запрос, сначала проверяет, есть ли у него активное соединение, а если нет, создает его. Таким образом вы избежите открытия соединений, которые никогда не используются, а также получите хорошее разделение логики между вашим приложением и кодом базы данных.

13
ответ дан 1 December 2019 в 04:18
поделиться

Что ж, если вы используете класс, соединение должно открываться автоматически при создании экземпляра класса или при выполнении первого запроса. Если вы никогда не используете класс, соединение не будет открыто. Хотя это хорошая практика - закрывать его, когда он вам не нужен, не помешает позволить ему быть закрытым, когда поток запроса умирает.

Это может быть плохо, если у вас не установлены ограничения ресурсов в ваш файл php.ini, запрос может существовать вечно и никогда не закрывать соединение.

Если у вас сайт со средним или высоким трафиком, вам в любом случае следует подумать об использовании mysql_pconnect , чтобы было соединение всегда открыто, и вам не нужно открывать его при каждом запросе.

2
ответ дан 1 December 2019 в 04:18
поделиться

Обычно вам нужно открывать соединение с вашей базой данных только тогда, когда вам нужно использовать это соединение. Сохранение соединений открытыми может увеличить вероятность того, что часть вашего кода случайно или злонамеренно из-за действий других лиц вызовет выполнение нежелательных запросов к базе данных.

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

Лучше оставить одно соединение открытым на более длительный срок, чем открывать и закрывать несколько соединений.

1
ответ дан 1 December 2019 в 04:18
поделиться

Если ваш код чувствителен к производительности, то предпочтительным методом, как правило, является использование некоторой формы пула соединений и / или постоянных процессов, чтобы вы могли открыть одно соединение с базой данных, а затем использовать это соединение для обслуживания множества запросов страниц, а не для открытия нового соединения для каждого запроса, который в нем нуждается.

Если ваш код не чувствителен к производительности, это вообще не имеет значения.

В любом случае, точное время, когда доступ к базе данных осуществляется в ходе обработки определенного запроса, не является серьезным поводом для беспокойства.

Моя личная практика - сразу открывать соединение с базой данных, когда создается новый процесс-обработчик, а затем проверять, что он все еще жив когда я начинаю обрабатывать каждый запрос.Остальная часть кода может просто предположить, что соединение доступно, когда это необходимо, без затрат на соединение, пока пользователь ожидает ответа.

0
ответ дан 1 December 2019 в 04:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: