Решил реализовать коннект с базой данных так:
1) Класс lib_db -> методы Connect(),Query() и прочая шелуха
2) Класс lib_db MySQL extends lib_db -> Реализация конкретных запросов к конкретной базе данных (драйвер бд)
3) Файл dbquery.php -> содержит шаблоны запросов для конкретного драйвера БД.
(например const DBSELECT_WOL='SELECT [what] FROM [where] WHERE [uslovie] ORDERBY [order] LIMIT [limit]';)
Собственно, вопрос даже не в этом. Вопрос в том - как удобнее - коннектиться к бд 1 раз из 1го места и держать соединение открытым до конца или прописать в __destruct() дисконнект от бд и создавать класс там где мне нужно.
Вот, чтобы вам было удобнее подикутировать на эту тему я напишу плюсы и минусы методов.
Постоянный коннект:
+ Если произошло соединение с бд, то оно будет доступно в течение всего времени исполнения скрипта
- Если скрипт выполняется долго, то я "теряю" возможность подключения (max_connection_limit) при большой загрузке (кто юзал IPB, тот знает)
- Если какой-либо из модулей убьет соединение, весь скрипт покатится черт знает куда
Динамический коннект:
+ Экономия "мест" соединений с БД (подсоединился - получил результат - отсоединился)
+ Стабильность работы приложения при отказе некоторых модулей (ну не смог один из модулей приконнектиться)
- Возможны случаи, когда один из модулей как-раз не сможет приконнектиться.(может нарушиться логика работы сайта)
Если кто-то знает другие плюсы и минусы - пишите сюда (какой метод буду использовать - я уже решил, интересно, что скажут остальные...)
Спустя 3 часа, 54 минуты, 57 секунд (9.10.2006 - 15:56) BlackTheMad написал(а):
Видимо, ты выбрал себе второй.
Но вот я где-то читал, что при нормально составленных запросах, не делающих join'ы милионных таблиц, основное время уходит как раз на коннект. На конференции весенней Rasmus Lerdorf про это вещал
http://talks.php.net/show/phpclub/6
Это слайды с конфы...правда там используется PGSQL...может с MySQL всё обстоит совсем иначе.
=)
Но вот я где-то читал, что при нормально составленных запросах, не делающих join'ы милионных таблиц, основное время уходит как раз на коннект. На конференции весенней Rasmus Lerdorf про это вещал
http://talks.php.net/show/phpclub/6
Это слайды с конфы...правда там используется PGSQL...может с MySQL всё обстоит совсем иначе.
=)
Спустя 10 дней, 16 часов, 45 минут, 53 секунды (20.10.2006 - 08:42) max_ru написал(а):
BlackTheMad, действительно, я выбрал себе второй способ.
Заметного снижения производительности движка не было замечено (это при том, что движок полностью объектный, за исключением линейного скрипта инициализации библиотек, плюс движок является парсером текстовых файлов - шаблонов и динамически подключает библиотеки). Таким образом на фоне "тяжелости" движка, 5-6 подключений к mySQL не будут заметны в принципе (ну дадут они 2 сотых секунды, ну и что).
Итого: генерация страницы ( 5-6 псевдо-тэгов© ;) плюс десяток подключаемых динамически макросов) занимает в среднем от 0.05 до 0.3 секунды (в зависимости от загруженности сервака).
Заметного снижения производительности движка не было замечено (это при том, что движок полностью объектный, за исключением линейного скрипта инициализации библиотек, плюс движок является парсером текстовых файлов - шаблонов и динамически подключает библиотеки). Таким образом на фоне "тяжелости" движка, 5-6 подключений к mySQL не будут заметны в принципе (ну дадут они 2 сотых секунды, ну и что).
Итого: генерация страницы ( 5-6 псевдо-тэгов© ;) плюс десяток подключаемых динамически макросов) занимает в среднем от 0.05 до 0.3 секунды (в зависимости от загруженности сервака).
_____________
Взгляд у меня добрый, но рубашка - смирительная.