Неопытный вопрос PHP:
У меня есть файл сценария PHP, который мне нужно включать на разные страницы много раз во многих местах.
У меня есть возможность либо разбить прилагаемый файл на несколько меньших файлов и включить их по мере необходимости … ИЛИ … Я мог бы просто сохранить все это вместе в одном файле PHP.
Мне интересно, есть ли влияние производительности на использование файла с большим или меньшим размером для include () в этом контексте? Например, есть ли разница в производительности между файлом 200 КБ и файлом 20 КБ?
Спасибо.
Будет разница между файлом 200 КБ и 20 КБ … Но вы, вероятно, этого не заметите: файл размером 200 КБ не так уж и велик – и вы обычно используете много файлов, которые не являются «маленькими», когда вы «Создание большого приложения.
Есть две вещи, которые требуют времени, когда вы загружаете файл .php
:
В качестве побочной цели: в общей ситуации вы получите гораздо больше времени / ресурсов / ресурсов, оптимизируя ваши SQL-запросы, или добавляя некоторые кеширующие меканизм, чем думая об этом.
Будьте осторожны с include_once()
(а также require_once()
), это дороже для запуска, чем include()
. Каждый раз, когда выполняется include_once()
, PHP выполняет поиск по внутреннему индексу уже включенных файлов, прежде чем принимать решение о загрузке файла или нет. Чем больше в индексе, тем медленнее этот поиск. Также при использовании include()
или include_once()
пытайтесь использовать абсолютные пути, где это возможно, поскольку это намного быстрее, чем относительные пути, потому что вы не заставляете PHP выработать абсолютный путь для вас. Как сказал ggiroux, некоторая форма кэширования, такая как APC, принесет огромные награды и заставит беспокоиться о том, сколько из них включает вызовы, которые у вас неактуальны (в значительной степени) (если у вас нет плохо написанного кода).
РЕДАКТИРОВАТЬ–
Беспокойство по поводу вышеперечисленных вызовов – это только проблема, когда вы начинаете иметь несколько тысяч requires
или includes
в свою кодовую базу.
Конечно, есть влияние, поэтому обязательно используйте include_once () вместо include (). Возможно, вам стоит рассмотреть возможность использования APC с кешем include.