Bootstrapping

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

В сценарии входа регистрируются автозагрузчики классов для разных библиотек. Это включает автозагрузчик Composer через его файл autoload.php и автозагрузчик Yii через его файл класса Yii. Затем сценарий входа загружает конфигурацию приложения и создает экземпляр приложения.

В конструкторе приложения выполняется следующая работа по самонастройке:

  • Вызывается метод preInit(), который конфигурирует некоторые высокоприоритетные свойства приложения, такие как basePath.
  • Зарегистрируйте обработчик ошибок.
  • Инициализация свойств приложения с использованием заданной конфигурации приложения.
  • Вызывается init(), который в свою очередь вызывает метод bootstrap() для запуска компонентов начальной загрузки.
    • Включите поставщика файла манифеста vendor/yiisoft/extensions.php.
    • Создавать и запускать компоненты начальной загрузки, объявленные расширениями.
    • Создавать и запускать компоненты приложения или модули, объявленные в свойстве начальной загрузки приложения.

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

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

В производственном режиме включите кеш байт-кодов, такой как PHP OPcache или APC, чтобы минимизировать время, необходимое для включения и анализа PHP-файлов.

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