Files
XC_VM/docs/ru/development/bootstrap-contexts.md
T
Divarion_D dbf535bcc5 docs(translate): robust {N} sentinels + possessive handling; regenerate ru
Fix Markdown-mangling artifacts the free web engine (yandex) produced in the
committed docs/ru, and regenerate the whole tree cleanly (0 fallbacks):

- Sentinel format @@N@@ -> {N}. MT engines are trained to preserve curly
  format-string placeholders, so {N} survives code-heavy lines where @@N@@ (and
  ZZZ…ZZZ, which also duplicated its Z) were split/moved — e.g. the stray
  "@0@@" in the FAQ and "load balancerZ" in the README are gone.
- Possessive: a trailing English `'s` is consumed INTO the masked span and
  dropped on restore. Every sentinel format breaks when a bare `'s` sits right
  after it, and Russian has no possessive `'s`.
- Validate + retry: after restore, any leftover brace fragment triggers a retry
  (the engine is non-deterministic); after a few failures the line stays English
  so a broken token is never emitted.
- Glossary += KeyDB, yt-dlp, Ubuntu, iptables, MAGSCAN.

Regenerated docs/ru (37 files, translators/yandex): no residual sentinels,
mkdocs build --strict clean.
2026-08-21 16:31:01 +03:00

171 lines
6.0 KiB
Markdown

# Контексты начальной загрузки
`XC_Bootstrap` - это единая точка входа для инициализации системы.
Каждый контекст загружает только те подсистемы, которые необходимы для его пути выполнения.
Контекст выражается в виде значения перечисления `BootContext`.
---
## Краткий справочник
|Случай перечисления|Типичное использование|
| --- | --- |
| `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` | `''` |Название процесса для CLI|
| `shutdown` | `callable` |встроенный|Переопределить обратный вызов завершения работы|
---
## Идемпотентность
`boot()` выполняется один раз для каждого процесса. Повторные вызовы игнорируются.
```php
XC_Bootstrap::boot(BootContext::ADMIN);
XC_Bootstrap::boot(BootContext::CLI); // ignored
```
Для проведения тестов:
```php
XC_Bootstrap::reset();
```
---
## Общедоступные методы
```php
XC_Bootstrap::getContext(): ?BootContext
XC_Bootstrap::isBooted(): bool
XC_Bootstrap::isCli(): bool
XC_Bootstrap::getDatabase(): ?Database
XC_Bootstrap::getContainer(): ServiceContainer
```
## Связанные файлы
|Файл|Роль|
| --- | --- |
| `src/bootstrap.php` |Определяет MAIN_HOME, требует автозагрузки Composer, загружает контекст|
| `src/Core/Enum/BootContext.php` |Перечисление контекста загрузки|
| `src/Core/Init/LegacyInitializer.php` |Унаследованная инициализация для каждого контекста|