2010-03-10 4 views
15

Каждая страница моего сайта отображается с использованием PHP.Сколько PHP-запросов слишком много?

Каждый файл PHP использует около 10 включений. Поэтому для каждой отображаемой страницы серверу необходимо получить 10 файлов, в дополнение к остальным функциям (MySQL и т. Д.).

Должен ли я объединить их в один файл включения? Будет ли это иметь ЛЮБОЕ отличие от реальной скорости? Это не тривиальная задача, так как там будут спагетты переменной области для сортировки.

ответ

24

Включить файлы обрабатываются на сервере, поэтому они не «загружены» браузером. Разница в производительности при использовании, включая копирование и вставку кода или консолидации файлов, настолько ничтожна (и я предполагаю, что мы говорим об этом в диапазоне 10   мс до 100   мс, при абсолютном большинстве), что это нет «Это вообще того стоит.

Не стесняйтесь include и require до вашего сердца. Чистый код существенно более важен, чем бритье менее 100   мс при загрузке страницы. Если вы строите что-то там, где время является критическим, вы все равно не должны использовать PHP.

+0

Я думаю, что это сложнее, потому что это зависит, если файлы считываются из памяти или диска. С диска - это может занять несколько мс, зависит от того, фрагментирован ли он и размер файла. (либо ОС может кэшировать файл, либо сам жесткий диск.) – Dor

+3

@Dor не стоит недооценивать возможности кеша диска :) Фрагментация диска никогда не повлияет на ваш сайт –

+0

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

0

Несмотря на то, что операции ввода-вывода с дисками между крупнейшими производителями производительности, обычный сайт не заметит никакого разумного количества включений. Прежде чем вы столкнетесь с любыми проблемами с включением, у вас, вероятно, уже будет некоторый кеш-код операции, который также устранит эту проблему.

0

include\ and requires` только открыть файл на стороне сервера, но это может быть время consumming в зависимости от аппаратной/файловой системы и т.д.

Во всяком случае, если вы можете использовать autoloader. Будут загружены только нужные файлы.

Тогда, если вы считаете, что включенные файлы являются источником замедления (и я думаю, что есть много других моментов, чтобы искать улучшения раньше), вы можете попытаться автоматически объединить файлы. У вас по-прежнему есть один файл для каждого класса при разработке, но вы можете создать файл, содержащий определение каждого класса, только один include (что-то вроде cat <all your included file>.php > to_include.php).

3

Что нужно, чтобы выяснить, где находятся файлы на пути включения. Если у вас есть несколько мест в вашем пути include, PHP будет искать каждое местоположение, пока он не найдет файл или не сработает (в этом случае он выдает ошибку). Вот почему вы должны поместить путь include, где большинство включенных файлов должно быть найдено поверх включенного пути.

Если вы используете абсолютные пути в своем пути включения, PHP будет кэшировать путь в кэше realpath, но обратите внимание, что это очень быстро устаревает. Так что да, в том числе десять файлов потенциально медленнее, чем один большой файл, просто потому, что PHP чаще проверяет путь включения. Однако, если ваш веб-сервер не является действительно слабой машиной, десяти файлов недостаточно, чтобы сделать это. Это становится интересным только в том случае, если в него входят сотни файлов или есть много мест для поиска, и в этом случае вы должны использовать кеш OpCode.

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


Ссылка

Смежные вопросы