Чтобы дать некоторый контекст:
Недавно я поговорил с коллегой об использовании автозагрузчиков в PHP. Я спорил в пользу их, против него.
Моя точка зрения заключается в том, что Autoloaders могут помочь вам свести к минимуму ручную исходную зависимость, которая, в свою очередь, поможет вам сократить объем потребляемой памяти, если в нее будут включены большие файлы, которые вам могут не понадобиться.
Его ответ заключался в том, что включение файлов, которые вам не нужны, не является большой проблемой, поскольку после того, как файл был включен после того, как он хранится в памяти дочерним процессом Apache, и эта часть памяти будет доступна для последующих запросов. Он утверждает, что вы не должны беспокоиться о количестве включенных файлов, потому что достаточно скоро все они будут загружены в память и использованы по требованию из памяти. Поэтому память не является проблемой, и накладные расходы на поиск файла, который вам нужен в файловой системе, вызывают большую озабоченность.
Он умный парень и, как правило, знает, о чем он говорит. Тем не менее, я всегда думал, что память, используемая Apache и PHP, специфична для обрабатываемого конкретного запроса. Каждому запросу присваивается объем памяти, равный опции memory_limit PHP, и любая исходная компиляция и обработка действительны только для срока действия запроса.
Даже с кэшами op-code, такими как APC, я думал, что индивидуальный запрос по-прежнему должен загружать каждый файл в его собственную часть памяти, и что APC является просто ярлыком для его предварительной компиляции для процесса ответа.
Я искал документацию по этому вопросу, но пока ничего не нашел. Я был бы очень признателен, если бы кто-нибудь мог указать мне любую полезную документацию по этой теме.
ОБНОВЛЕНИЕ:
Чтобы уточнить, часть обсуждения автозагрузчика была скорее контекстом:).
Возможно, он не был ясен, но мой главный вопрос заключается в том, будет ли Apache объединять свои ресурсы для ответа на несколько запросов (особенно память, используемая включенными файлами), или каждый запрос должен будет получить код, необходимый для удовлетворения путь выполнения в изоляции от других запросов, обработанных из того же процесса.
например.: Файлы 1, 2, 3 и 4 равны по 100 КБ каждый. Запрос A включает файлы 1, 2 и 3. Запрос B включает файлы 1, 2, 3 и 4.
По его мнению, он думает, что Request A будет потреблять 300 КБ для полного его выполнения, а Request B будет потреблять еще 100 КБ, потому что файлы 1,2 и 3 уже находятся в памяти.
На мой взгляд, это 300 КБ и 400 КБ, потому что они оба обрабатываются независимо (если одним и тем же процессом).
Это возвращает его к его аргументации, что "просто включите партию", потому что вы будете использовать ее в любом случае "в отличие от моего" включают только то, что вам нужно, чтобы уменьшить размер запроса.
Это довольно фундаментально для того, как я подхожу к созданию веб-сайта PHP, поэтому я был бы очень заинтересован в том, что я не в курсе.
Я также всегда считал, что для крупномасштабной памяти веб-сайта является самым ценным ресурсом и больше беспокоит, чем проверки файловой системы для автозагрузчика, которые в любом случае кэшируются ядром.
Вы правы, хотя время для сравнения!