Подключение к БД и Singleton. Как лучше?

Рейтинг: 2Ответов: 1Опубликовано: 02.03.2015

Если класс подключения к БД в себе имеет функцию запроса и в конце имеет закрытие подключения, то имеет ли смысл в данной ситуации делать из него Singleton? И правильно ли вообще реализовывать в одном классе подключение, запрос и закрытие подключения? Как вариант, возможно, close() вывести в отдельную функцию и вызывать по мере необходимости, а не закрывать каждый раз подключение после каждого запроса?

Ответы

▲ 2

Использовать синглетон для для подключения к базе данных нет надобности:

  1. На уровне драйвера, устанавливающего связь с СУБД не осуществляется повторной установки соединения, если уже имеется соединение с такими же параметрами. Вместо этого возвращается уже существующее соединение.
  2. Соединение имеет смысл закрывать, если вы ожидаете медленный запрос, который почему-то будет обрабатываться PHP. Например, выполнили запрос к базе данных и стали отдавать пользователю 4Гб файла. Занятое соединение не будет участвовать в обработке других запросов и если в текущем скрипте больше не ожидается соединений, имеет смысл закрыть соединение с базой данных до того, как пользователь принялся долго и упорно выкачивать объемные данные. Если ваш скрипт отрабатывает несколько микросекунд - в явном закрытии соединений нет надобности - они будут автоматически закрыты после выполнения скрипта.