Обычно я как делал: в каждом скрипте (файле) модели подключал класс базы данных, создавал экземпляр класса и тем самым делал подключение к бд, потом брал оттуда то, что надо. После того, как скрипт отрабатывает, соединение само собой умирает, как и объект. Затем где-то есть header на другой файл какой-нибудь и все заново по кругу. Получается, что идёт постоянное переподключение к базе данных, хорошо ли это? Вопрос: как грамотно организовать подключение, может быть в рамках одного пользователя: одно подключение при входе, один реконнект при выходе? Или делать одно подключение в каждой модели (на каждой странице сайта)? Заранее спасибо
В вас не создается новое соединеие если оно уже есть пока идет отработка одного запроса клиента. В чем проблема? Проблема в непонимании того как это работает поэтому выведите дебагером все запросы включая подключение и будет понятно как это работает. Описанных вами сценариев недостаточно для того, чтобы утверждать что вам необходимо постоянное соединение с субд. Оптимизировать что то имеет смысл тогда когда у вас есть проблема материализованная в виде метрик эту проблему выявляющих. Оптимизация ради оптимизации лишена смысла
Это я понимаю. Я говорю о том, как и где лучше и целесообразно ли хранить долгое (мб постоянное) соединение с бд
@rugleb Мнение начинающего, а именно: 1. В файле config.php ты делаешь конфигурационные данные для работы с БД, user, pass, bdname, host 2. В другом файле bd.php ты делаешь соединение с БД и при этом указываешь конфигурационные данные require('config.php); 3. Ты сделал один раз подключение к БД и пере подключаться не нужно будет как сказал @Zuldek ну и я конечно) 4. Далее для работы с БД ты должен будешь всего указать один файл bd.php в каждом файле где нужна работа с БД 5. Если в файле в любом нету работы с БД ты не должен указывать туда файл bd.php так как работать в том файле с базой не надо 6. Вот в принципе и все, что я смог рассказать 7. Повторяюсь это мнение начинающего. Спасибо за внимание.
Вы имеете ввиду такое подключение, которое будет для всех входящих запросов на скрипт ? Типа какую страничку ни открой, а подключение будет то, что было при первом посещении к примеру. Такого не будет.
<придирки> не bd.php, а db.php (не bazaDannih, а dataBase) </придирки> db.php подключать requie_once для того, чтобы не париться о том, что файл уже подключен. И в db.php реализовать класс - синглтон, чтобы всё таки было одно соединение в бд на один запрос. А так, да, нельзя создавать одно соединение на всю сессию пользователя. Это очень неэффективно.
@valentinnew Если ты это мне ответил, кому как нравится тот и называет файлы db.php или bd.php смысл один и тот же) И еще не requie_once а require_once у тебя ошибочка. С его @Abyss аргументами я согласен.
если ты пишешь код для себя и читать его будешь только ты, то никто тебе не будет указывать как писать. Но если работаешь в команде, то никто не одобрит такой подход. Программу пишут в первую очередь для программиста, а не для машины. Но это, судя по моему предыдущему опыту здесь - холиварный вопрос. db.php или bd.php - принципиальный момент requie_once - простая опечатка.
@valentinnew Не буду спорить с опытным программистом, так как я начинающий. Я вообще имею право на точку своего мнения.
Все имют право на свою точку зрения. И спорить надо, но аргументированно и объективно, а не основываясь на своих, сугубо личных предпочтениях.
http://phpfaq.ru/pdo/pdo_wrapper условие if (self::$instance === null) проверяет - было ли раньше подключение...
1) Объявляем статичный класс для работы с БД. 2) Пишем в нем методы, какие нужны. Учитываем, чтоб подключение к БД делалось только непосредственно при запросе, а не заранее. Там же храним коннект. Им же возвращаем результаты. 3) Цепляем этот класс к точке входа. Один-единственный раз. 4) .... 5) PROFIT111111!!