Files
XC_VM/docs/ru/development/bootstrap-contexts.md
T
Divarion_D bdbcde97c7 docs: commit generated ru, translate locally before release (not in CI)
CI translation was slow, so move it out of GitHub Actions: docs/ru is now a
committed, generated tree refreshed LOCALLY before a release; CI only builds it.

- pages.yml: drop the setup-python/cache/translate steps — the workflow now just
  installs the build toolchain and runs `mkdocs build --strict` on the committed
  en+ru trees.
- .gitignore: stop ignoring docs/ru (now committed); keep site/ + .docs-cache/.
- Split deps: docs/requirements.txt = build only (mkdocs-material, static-i18n,
  used by CI); tools/docs/requirements.txt = translators (local-only).
- Makefile: docs-venv installs both; docs-build/docs-serve no longer translate
  (translation is the deliberate `make docs-translate` release step).
- updates_checklist.md: new "Regenerate translated documentation" step
  (make docs-translate + docs-build, commit docs/ru with the release commit).
- Commit the generated docs/ru (37 files, translators/yandex).

Rule: edit ONLY docs/en; docs/ru is generated — never hand-edit it.
2026-08-20 22:37:44 +03:00

171 lines
6.0 KiB
Markdown

# Контексты начальной загрузки
`XC_Bootstrap` - это единая точка входа для инициализации системы.
Каждый контекст загружает только те подсистемы, которые необходимы для его пути выполнения.
Контекст выражается в виде значения `BootContext` enum.
---
## Краткий справочник
|Случай перечисления|Типичное использование|
| --- | --- |
| `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` |Унаследованная инициализация для каждого контекста|