2010-07-12 1 views
0

«Обычная последовательность запуска скриптов», я имею в виду, что на большинстве страниц на моем сайте первый порядок ведения бизнеса состоит в том, чтобы проконсультироваться с 3 конкретными файлами (через include()), которые централизованно определяют константы, некоторые функции, используемые во многих скрипты и класс или два, а также предоставить учетные данные базы данных. Я не знаю, есть ли более стандартный термин для такой установки.Сколько «включений» слишком много, как часть обычной последовательности запуска скриптов? Или нет такой вещи?

Я хочу знать, возможно ли иметь слишком много из них и сделать вещи медленнее в результате. Я знаю, что использование include() имеет определенные накладные расходы, потому что это другой файл, который нужно искать в файловой системе, анализировать и выполнять. Если есть такая вещь, как слишком много include, я хочу знать, есть ли я поблизости от этой точки. Нотабене Некоторые из моих страниц include() еще больше скриптов, которые им специально необходимы (например, скрипт, который определяет функцию, используемую всего несколькими страницами), и я не считаю эти случайные дополнительные include s, которые используются в любом случае разумно экономно. Я только беспокоюсь о 3 include s, которые встречаются на большинстве страниц и настраивают все.

Что такое 3 include?

Два из них находятся за пределами webroot. common.php определяет набор функций, классов и других вещей, которые не различаются между сайтами разработки и производства. config.php определяет различные константы и пути, которые различны на сайтах разработки и производства (к какой базе данных можно подключиться, помимо прочего). Конечно, желательно, чтобы этот файл, в частности, находился за пределами webroot. config.phpinclude() s common.php внизу.

Другой один находится внутри вебсервера и содержит единственную строку:

include [path to appropriate directory]/config.php 

каталог отличается между сайтами разработки и производства.

(Не стесняйтесь подвергать сомнению обоснование создания includes таким образом, но я чувствую, что это действительно хорошая и надежная система для подготовки каждой страницы, и мой вопрос заключается в том, плохо ли это многие include s в качестве базовой линии на каждой странице.)

+5

Вы испытываете какие-либо проблемы с производительностью? вы прокомментировали свой код или это только о преждевременной оптимизации? – SilentGhost

+0

Очевидно, что вы можете заходить за борт со слишком большим количеством файлов, но если три или тридцать файлов упрощают поддержку вашей программы, все в порядке. Но если они просто разделены произвольно, и это затрудняет сохранение вашей программы, возможно, объединение ваших файлов будет иметь смысл или разделить их на разные строки. Но отсюда все прекрасно. :) – sarnold

ответ

1

Лучшее, что нужно сделать, это использовать ускоритель какого-либо типа, APC или eAccelerator или что-то вроде этого, чтобы хранить их в кэше в ОЗУ. Причин этого немало, и на занятом месте это означает потерю.

Например, друг провел эксперимент на своем веб-сайте, который имеет около 15 тыс. Пользователей в день и среднее время загрузки страницы 0,03. Он удалил большинство включений, которые он использовал в качестве шаблонов - среднее время загрузки снизилось до 0,01 сек. Затем он поставил ускоритель - 0,002 секунды на страницу. Надеюсь, эти цифры убедят вас в том, что они должны быть как можно меньше сохранены на загруженных сайтах, если вы не используете какой-либо ускоритель.

Это связано с высоким уровнем ввода-вывода, который необходим для сканирования каталогов, поиска файлов, их открытия, чтения и т. Д.

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

2

Используйте APC, и ваши заботы уходят. opcode ваших файлов будет в кеше в ОЗУ и все пройдет супер быстрый. :) Facebook does this так что это определенно поможет вам до шкала.

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

0

Я не верю, что в производительности есть что-либо, что не включает, потому что думайте о случае, когда один файл содержит 500 строк кодов, а в другом случае у вас есть 50 включенных файлов с одной строкой кода.

+0

I/O может быть огромным узким местом приложения. Доступ к 50 файлам для каждого запроса может означать большие накладные расходы. – galambalazs

+0

Попробуйте написать тест, чтобы увидеть его сами. В моем случае узкое место было жестким. Все, что может уменьшить IO, оценивается. Используйте меньше файлов, меньше IO и используйте какой-то ускоритель. – dwich