Замедляет ли включение require ("db.php") вверху каждой страницы php? - PullRequest
0 голосов
/ 28 февраля 2011

Мой файл db.php подключается, выбирает и создает базы данных и таблицы, если они не существуют. Когда мне требуется ("db.php") вверху каждой страницы, он каждый раз перезапускает этот код? Не приведет ли это в конечном итоге к замедлению, хотя и незначительному? Должен ли я действительно подключаться к базе данных, выбирать ее и проверять создание новых таблиц, если они еще не существуют на каждой странице, требующей запроса к базе данных? Есть ли лучшая практика для такого типа ситуации? Я ни о чем не беспокоюсь?

Ответы [ 6 ]

2 голосов
/ 28 февраля 2011

Часть «Создание баз данных и таблиц, если они не существуют», которую я бы удалил из процесса начальной загрузки: это может быть дорогостоящим и определенно не нужно запускаться при каждом запросе.Пусть ваш код корректно завершится аварийно, если таблица не существует.

Просто установление соединение с базой данных, однако, довольно стандартно для большинства приложений PHP, так как обычно требуется в большинстве, если нетвсе, контексты.

Существует возможность создания обертки базы данных, которая "Lazy connect", то есть устанавливает соединение только тогда, когда это действительно необходимо, но я не стал бы беспокоиться об этом, если у вас действительно нет причинна основе измерений производительности.

1 голос
/ 28 февраля 2011

Я бы порекомендовал вам:

  1. не устанавливать соединение с Db-сервером, пока вы на самом деле не запрашиваете его;просто переведите его в режим ожидания и подключитесь, когда поступит первый запрос Db. Так работает Zend_Db в Zend Framework, и большинство фреймворков действуют с одной и той же мыслью: подготовьте ресурсы и используйте их ТОЛЬКО при необходимости.

  2. , чтобы ваш код и структура проекта были как можно более аккуратными.Медленный код всегда предпочтительнее нечитаемого.

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

0 голосов
/ 28 февраля 2011

первое использование require_once не просто require, в основном require_once ("db.php") просто скопирует содержимое кода db.php и вставит его туда, где его вызывают.Следовательно, накладные расходы = открытый файл + чтение файла + копирование файла + вставка файла и, наконец, интерпретация этих дополнительных данных.

0 голосов
/ 28 февраля 2011

Можно с уверенностью сказать, что если вам не нужен кусок кода, не называйте его.Однако файл для подключения к вашей базе данных не займет слишком много (вероятно, 5-6 строк не очень требовательного кода).

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

0 голосов
/ 28 февраля 2011

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

0 голосов
/ 28 февраля 2011

Каждый раз, когда вы делаете запрос, файл добавляется в код скрипта. Этот код должен быть обработан компилятором php во время выполнения. Таким образом, вы добавляете около 1 КБ кода, который должен обрабатывать ваш процессор каждый раз, когда вы запускаете скрипт. Так что да, вы замедляете его, но замедление незначительно, это будет заметно, только если вы начнете добавлять файлы размером более 1 МБ. 1 МБ кода - это много кода.

...