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

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

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

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

Я задаюсь вопросом, существует ли какое-либо влияние производительности использования большего по сравнению с меньшим файлом для, включают () в этот контекст? Например, есть ли какое-либо различие в производительности между файлом 200 КБ и файлом 20 КБ?

Спасибо.

36
задан Tom 19 February 2010 в 17:10
поделиться

3 ответа

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

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

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


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

43
ответ дан 27 November 2019 в 05:57
поделиться

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

1
ответ дан 27 November 2019 в 05:57
поделиться

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

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

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

15
ответ дан 27 November 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: