Php - mysqli подключается к БД несколько раз

У меня есть структура MVC, которая работает следующим образом:

/models/Mo_Sql.php (contains the connectdb function)
/models/Mo_ClassName1.php (that extends Mo_Sql)
/models/Mo_ClassName2.php (that extends Mo_Sql)
/models/Mo_ClassName...X.php (that extends Mo_Sql)
/models/... 

/rules/Ru_ClassName1.php (with private Mo_ClassName1)
/rules/Ru_ClassName2.php (with private Mo_ClassName2)
/rules/Ru_ClassName...X.php (with private Mo_ClassNameX)
/rules/Ru_......

/config/config.php with all Mo_ and Ru_ included and is called in every page of my site.

Меня беспокоит то, что когда я требую config.php require_once, этот последний включает N файлов Mo_ и N файлов Ru_, поэтому при построении я полагаю, что будет открыто несколько соединений с БД, поскольку каждый файл Mo_ расширяет Mo_Sql.

Мой вопрос: опасно ли так поступать? Есть ли другой способ вызвать только один раз Mo_SQL и/или Mo_Sql->connectdb?

Спасибо за вашу помощь


person Lebach    schedule 09.12.2013    source источник
comment
почему бы вам не хранить соединение в общем месте?   -  person Daniel A. White    schedule 09.12.2013
comment
Можете ли вы указать, какой mvc это происходит?   -  person omar-ali    schedule 09.12.2013
comment
Создайте объект подключения обработчика БД в Singleton и с его помощью внедрите в класс Model.   -  person Snowwolf    schedule 09.12.2013
comment
Дубликат недавно всплывшего stackoverflow.com/a/18853389/285587   -  person Your Common Sense    schedule 09.12.2013


Ответы (1)


Как сказал Даниэль, в идеале вам нужна центральная точка в вашем MVC, которая обрабатывает ваши подключения к базе данных. Таким образом, он доступен во всем вашем проекте, плюс вы можете легко отслеживать, сколько подключений выполняется одновременно (желательно, конечно, только одно).

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

Если вы просто создаете свой собственный проект в родном PHP, вы можете просто реализовать что-то, что ведет себя так, как описал Дэниел.

person Viridis    schedule 09.12.2013
comment
Он отлично работал с одним классом подключения, теперь только один dbconnect на страницу, спасибо - person Lebach; 11.12.2013