PHP include (): размер и производительность файла

Неопытный вопрос PHP:

У меня есть файл сценария PHP, который мне нужно включать на разные страницы много раз во многих местах.

У меня есть возможность либо разбить прилагаемый файл на несколько меньших файлов и включить их по мере необходимости … ИЛИ … Я мог бы просто сохранить все это вместе в одном файле PHP.

Мне интересно, есть ли влияние производительности на использование файла с большим или меньшим размером для include () в этом контексте? Например, есть ли разница в производительности между файлом 200 КБ и файлом 20 КБ?

Спасибо.

Related of "PHP include (): размер и производительность файла"

Будет разница между файлом 200 КБ и 20 КБ … Но вы, вероятно, этого не заметите: файл размером 200 КБ не так уж и велик – и вы обычно используете много файлов, которые не являются «маленькими», когда вы «Создание большого приложения.

Есть две вещи, которые требуют времени, когда вы загружаете файл .php :

  • Исходный код PHP «скомпилирован» на «opcodes» – это вполне эквивалентно байт-коду JAVA
    • Это делается каждый раз, когда файл PHP включен, по умолчанию
    • Но, используя некоторый кеш-код opcode, такой как APC , эти коды операций могут храниться в памяти, и этот материал компиляции не выполняется каждый раз больше – это здорово: это будет означать меньшее использование ЦП, поскольку компиляция больше не будет выполнена (это будет сделано только время от времени) .
  • Выполняются коды операций
    • В зависимости от того, что содержит скрипт, это может занять некоторое время или нет:
    • Если файл содержит только определения функций или классов, это не займет много времени: ничего не будет выполнено.
    • Если файл содержит инструкции, потребуется больше времени ^^

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

Будьте осторожны с include_once() (а также require_once() ), это дороже для запуска, чем include() . Каждый раз, когда выполняется include_once() , PHP выполняет поиск по внутреннему индексу уже включенных файлов, прежде чем принимать решение о загрузке файла или нет. Чем больше в индексе, тем медленнее этот поиск. Также при использовании include() или include_once() пытайтесь использовать абсолютные пути, где это возможно, поскольку это намного быстрее, чем относительные пути, потому что вы не заставляете PHP выработать абсолютный путь для вас. Как сказал ggiroux, некоторая форма кэширования, такая как APC, принесет огромные награды и заставит беспокоиться о том, сколько из них включает вызовы, которые у вас неактуальны (в значительной степени) (если у вас нет плохо написанного кода).

РЕДАКТИРОВАТЬ–

Беспокойство по поводу вышеперечисленных вызовов – это только проблема, когда вы начинаете иметь несколько тысяч requires или includes в свою кодовую базу.

Конечно, есть влияние, поэтому обязательно используйте include_once () вместо include (). Возможно, вам стоит рассмотреть возможность использования APC с кешем include.