mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-03 20:02:29 +02:00
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).
177 lines
6.8 KiB
Markdown
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` |Унаследованная инициализация для каждого контекста|
|