Контексты начальной загрузки¶
XC_Bootstrap - это единая точка входа для инициализации системы.
Каждый контекст загружает только те подсистемы, которые необходимы для его пути выполнения.
Контекст выражается в виде значения перечисления BootContext.
boot()принимаетstring|BootContext, поэтому устаревшая строкаXC_Bootstrap::CONTEXT_*константы (CONTEXT_ADMIN,CONTEXT_CLI, ...) все еще работают, но являются псевдонимами@deprecated— новый код должен передавать регистр перечисления (BootContext::Admin). Регистры перечисления равны ПаскалЬкас (Minimal,Cli,Stream,Admin), не в верхнем регистре.
Краткий справочник¶
| Случай перечисления | Типичное использование |
|---|---|
BootContext::Minimal |
Скрипты, которым нужны только пути /конфигурация |
BootContext::Cli |
Задания Cron и команды CLI |
BootContext::Stream |
Конечные точки потоковой передачи (live, vod, timeshift) |
BootContext::Admin |
Панель администратора/реселлера |
Детали контекста¶
BootContext::Минимальный¶
Загружает константы, пути, конфигурацию, логгер и обработчики ошибок. Нет подключения к базе данных.
Включает в себя:
- Composer PSR-4 автозагрузчик (
vendor/autoload.php) - константы пути (
MAIN_HOME,INCLUDES_PATH, ...) - регистратор (
Logger::init()) - помощники по устранению ошибок (
generateError(),generate404())
Не включает: базу данных, Redis, сеансы, транслятор, API-интерфейсы администратора.
Загрузочный текст::Cli¶
Используется для задач cron и CLI.
Добавляет инициализацию базы данных и устаревшего ядра поверх MINIMAL.
Включает в себя:
- Подключение к базе данных
LegacyInitializer- необязательно Redis (
'redis' => true) - необязательный заголовок процесса (
'process' => '...')
require_once '/home/xc_vm/bootstrap.php';
XC_Bootstrap::boot(BootContext::Cli, [
'cached' => true,
'process' => 'xc_vm: my-job',
]);
BootContext::Поток¶
Облегченный контекст для конечных точек потоковой передачи с высокой нагрузкой.
Включает в себя:
- Подключение к базе данных (
cached=true) - защита от наводнений и проверка хостинга
Исключает: Redis, переводчик, API-интерфейсы администратора, сеансы.
require_once '/home/xc_vm/bootstrap.php';
XC_Bootstrap::boot(BootContext::Stream, ['cached' => true]);
BootContext::Администратор¶
Полная инициализация панели администратора/реселлера.
Включает в себя:
- защищенный сеанс (
SameSite=Strict) - Подключение к базе данных (
cached=false) LegacyInitializer- Redis
- API-интерфейсы администратора/реселлера
- переводчик
- обработчик завершения работы
- постоянные состояния и глобальные параметры администратора
Матрица подсистемы¶
| Подсистема | Минимальный | Кли | Течение | Администратор |
|---|---|---|---|---|
| Константы/пути | ✅ | ✅ | ✅ | ✅ |
| Лесоруб | ✅ | ✅ | ✅ | ✅ |
| Защита от наводнений | — | — | ✅ | ✅ |
| Проверка хостинга | — | — | ✅ | ✅ |
| База данных | — | ✅ | ✅ | ✅ |
| Инициализатор наследия | — | ✅ | — | ✅ |
| Redis | — | выбирать | — | ✅ |
| Сессия | — | — | — | ✅ |
| API администратора | — | — | — | ✅ |
| Переводчик | — | — | — | ✅ |
boot() параметры¶
| Вариант | Тип | По умолчанию | Описание |
|---|---|---|---|
cached |
bool |
true для потока, false в противном случае |
Использовать кэшированные настройки |
redis |
bool |
true для администратора, false в противном случае |
Подключить Redis |
process |
string |
'' |
Название процесса для интерфейса командной строки |
shutdown |
callable |
встроенный | Переопределить обратный вызов завершения работы |
Идемпотентность¶
boot() выполняется один раз для каждого процесса. Повторные вызовы игнорируются.
Для проведения тестов:
Общедоступные методы¶
XC_Bootstrap::getContext(): ?string // active context's string value, e.g. 'admin' (null before boot)
XC_Bootstrap::isBooted(): bool
XC_Bootstrap::isCli(): bool // true when the active context is Cli
XC_Bootstrap::isDevMode(): bool // DEV_MODE flag (see Feature Flags)
XC_Bootstrap::getDatabase(): ?Database
XC_Bootstrap::getContainer(): ServiceContainer
Связанные файлы¶
| Файл | Роль |
|---|---|
src/bootstrap.php |
Определяет MAIN_HOME, требует автозагрузки Composer, загружает контекст |
src/Core/Enum/BootContext.php |
Перечисление контекста загрузки |
src/Core/Init/LegacyInitializer.php |
Унаследованная инициализация для каждого контекста |