Files
XC_VM/docs/ru/development/bootstrap-contexts.md
T
Divarion_D d4da90f37b fix(docs): translate bold spans atomically and auto-prune orphaned ru pages
The line-by-line web translator reordered words inside `**bold**` spans and
misplaced/dropped the markers, producing `**LB` or `****` (empty bold). Mask
each `**...**` as ONE atomic sentinel: translate the inner text on its own,
then store the whole balanced `**inner**` — the engine never sees the markers
and cannot reorder or collapse them. Also harden the anthropic prompt to keep
emphasis balanced.

Auto-prune: after translating, delete generated docs/ru files whose docs/en
source no longer exists (renamed/removed) and drop now-empty dirs, so the tree
mirrors docs/en 1:1 (removes the stale development/modules.md and
guides/geoip-and-device-detection.md).

Bump PROMPT_VERSION to 6 to invalidate the contaminated cache and regenerate
docs/ru (0 broken bold spans remaining, aside from pre-existing multi-line
bold that spans a soft line break).
2026-08-27 18:07:43 +03:00

177 lines
6.8 KiB
Markdown

# Контексты начальной загрузки
`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-интерфейсы администратора.
```php
require_once '/home/xc_vm/bootstrap.php';
XC_Bootstrap::boot(BootContext::Minimal);
```
---
### Загрузочный текст::Cli
Используется для задач cron и CLI.
Добавляет инициализацию базы данных и устаревшего ядра поверх `MINIMAL`.
Включает в себя:
- Подключение к базе данных
- `LegacyInitializer`
- необязательно Redis (`'redis' => true`)
- необязательный заголовок процесса (`'process' => '...'`)
```php
require_once '/home/xc_vm/bootstrap.php';
XC_Bootstrap::boot(BootContext::Cli, [
'cached' => true,
'process' => 'xc_vm: my-job',
]);
```
---
### BootContext::Поток
Облегченный контекст для конечных точек потоковой передачи с высокой нагрузкой.
Включает в себя:
- Подключение к базе данных (`cached=true`)
- защита от наводнений и проверка хостинга
Исключает: Redis, переводчик, API-интерфейсы администратора, сеансы.
```php
require_once '/home/xc_vm/bootstrap.php';
XC_Bootstrap::boot(BootContext::Stream, ['cached' => true]);
```
---
### BootContext::Администратор
Полная инициализация панели администратора/реселлера.
Включает в себя:
- защищенный сеанс (`SameSite=Strict`)
- Подключение к базе данных (`cached=false`)
- `LegacyInitializer`
- Redis
- API-интерфейсы администратора/реселлера
- переводчик
- обработчик завершения работы
- постоянные состояния и глобальные параметры администратора
```php
require_once '/home/xc_vm/bootstrap.php';
XC_Bootstrap::boot(BootContext::Admin);
```
---
## Матрица подсистемы
|Подсистема|Минимальный|Кли|Течение|Администратор|
| --- | :---: | :---: | :---: | :---: |
|Константы/пути|✅|✅|✅|✅|
|Лесоруб|✅|✅|✅|✅|
|Защита от наводнений|—|—|✅|✅|
|Проверка хостинга|—|—|✅|✅|
|База данных|—|✅|✅|✅|
|Инициализатор наследия|—|✅|—|✅|
| Redis |—|выбирать|—|✅|
|Сессия|—|—|—|✅|
|API администратора|—|—|—|✅|
|Переводчик|—|—|—|✅|
---
## `boot()` параметры
```php
XC_Bootstrap::boot(BootContext $context, array $options = []);
```
|Вариант|Тип|По умолчанию|Описание|
| --- | --- | --- | --- |
| `cached` | `bool` |`true` для потока, `false` в противном случае|Использовать кэшированные настройки|
| `redis` | `bool` |`true` для администратора, `false` в противном случае|Подключить Redis|
| `process` | `string` | `''` |Название процесса для интерфейса командной строки|
| `shutdown` | `callable` |встроенный|Переопределить обратный вызов завершения работы|
---
## Идемпотентность
`boot()` выполняется один раз для каждого процесса. Повторные вызовы игнорируются.
```php
XC_Bootstrap::boot(BootContext::Admin);
XC_Bootstrap::boot(BootContext::Cli); // ignored
```
Для проведения тестов:
```php
XC_Bootstrap::reset();
```
---
## Общедоступные методы
```php
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` |Унаследованная инициализация для каждого контекста|