|
|
|
| В книге "Объектно-ориентированное программирование на PHP" в приложении 1 (стр. 556-557) есть пример файла где происходит соединение с базой данных. Далее в примерах кода предполагается require_once подключение этого файла.
Т.к. в этом файле устанавливается соединение с базой, не значит ли это, что каждый раз, когда подключается этот файл происходит соединение с базой? Ведь если да - то это не нормально.
Дело в том, что сейчас у меня один раз подключается файл соединения с базой, а дальше только mysql_query везде. Хочу попробовать класс mysqli (или, например DbSimple), вот и интересует этот вопрос. | |
|
|
|
|
|
|
|
для: neokortex
(14.07.2011 в 01:16)
| | Протокол HTTP, а в след за ним и PHP не обладает сессионностью. Т.е. вы не можете установить соединение и использовать его на протяжении часов на нескольких страницах и клиентах. В конце каждой PHP-страницы соединение закрывается автоматически, как в mysql, так и в mysqli, так и в любом классе. Установить соединение и использовать его долго можно только в десктопных программах, у которых переход от одной страницы к другой не означают новый запрос к серверу и обработку его новым потоком (у которого нет контекста соседнего потока). Нормально это или ненормально - другой вопрос и вопрос этот к протоколу HTTP. Это упрощенный подход позволил в свое время упростить проткол, ПО и привел к взрывообразному развитию Web. Поэтому мы имеем то, что имеем - использовать что-то другое для исправления ситуации бесполезно - везде так, когда речь заходит о Web. | |
|
|
|
|
|
|
|
для: cheops
(14.07.2011 в 11:12)
| | Это понято.
Понятно, что каждый раз при загрузке страницы - мы устанавливаем соединение с базой данных. Но что если при генерации страницы файл для соединения с базой подключается 50 раз. Это значит 50 раз происходит соединение с базой? Или не так? | |
|
|
|
|
|
|
|
для: neokortex
(14.07.2011 в 11:39)
| | Нет, во-первых функция mysql_connect() не устанавливает соединение по-новой, если у неё в пуле есть соединение с такими параметрами, она просто возвращает ссылку на установленное соединение. Во-вторых require_once(), в отличие от require() выполняется только один раз, сколько бы раз в коде не встречался вызов файла с данным именем. | |
|
|
|
|
|
|
|
для: cheops
(14.07.2011 в 11:47)
| | Теперь понятно, спасибо. | |
|
|
|