Bootstrapping - это процесс подготовки среды до того, как приложение начнет разрешать и обрабатывать входящий запрос. Bootstrapping выполняется в двух местах: сценарий входа и приложение.
В сценарии входа регистрируются автозагрузчики классов для разных библиотек. Это включает автозагрузчик Composer через его файл autoload.php и автозагрузчик Yii через его файл класса Yii. Затем сценарий входа загружает конфигурацию приложения и создает экземпляр приложения.
В конструкторе приложения выполняется следующая работа по самонастройке:
- Вызывается метод
preInit()
, который конфигурирует некоторые высокоприоритетные свойства приложения, такие как basePath. - Зарегистрируйте обработчик ошибок.
- Инициализация свойств приложения с использованием заданной конфигурации приложения.
- Вызывается init(), который в свою очередь вызывает метод bootstrap() для запуска компонентов начальной загрузки.
- Включите поставщика файла манифеста vendor/yiisoft/extensions.php.
- Создавать и запускать компоненты начальной загрузки, объявленные расширениями.
- Создавать и запускать компоненты приложения или модули, объявленные в свойстве начальной загрузки приложения.
Поскольку работа по начальной загрузке должна быть выполнена до обработки каждого запроса, очень важно сохранить этот процесс и оптимизировать его как можно больше.
Постарайтесь не регистрировать слишком много компонентов начальной загрузки. Компонент начальной загрузки необходим только в том случае, если он хочет принять участие во всем жизненном цикле запрашивающей обработки. Например, если модуль должен зарегистрировать дополнительные правила синтаксического анализа URL-адресов, он должен быть указан в свойстве начальной загрузки, чтобы новые правила URL-адреса могли вступать в силу, прежде чем они будут использоваться для разрешения запросов.
В производственном режиме включите кеш байт-кодов, такой как PHP OPcache или APC, чтобы минимизировать время, необходимое для включения и анализа PHP-файлов.
Некоторые крупные приложения имеют очень сложные конфигурации приложений, которые делятся на множество файлов конфигурации меньшего размера. Если это так, подумайте о кэшировании всего массива конфигурации и загрузке его непосредственно из кэша перед созданием экземпляра приложения в сценарии входа.
0 комментариев