mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-09-29 04:02:19 +02:00
Overhaul the Docsify documentation (English + Russian) so it matches the current codebase and follows one consistent pattern. Content accuracy (post-migration): - Rewrite development/autoloader.md to PSR-4 / Composer (the old XC_Autoloader scanner, igbinary tmp/cache/autoload_map and registerDirectories are gone). - PascalCase every source path (src/core -> src/Core, domain/Stream, cli/Commands, public/Controllers, Infrastructure/Redis, ...) across all docs. - Replace the removed autoload.php references with vendor/autoload.php (build_system, bootstrap-contexts, error-handling, modules). - ssl-generation: note that the installer now auto-generates a unique self-signed certificate before Nginx starts. Common pattern (Clean & uniform): - Strip emoji from headings; remove the in-page Navigation blocks (the Docsify sidebar already provides navigation). - One H1 + intro per doc; uniform "Related files" / "Связанные файлы" section, added to the code-centric docs that lacked it. Structure: - Remove the empty stray docs/api/; move updates_checklist.md into builds/; link the previously-orphaned ucs-integration.md. - Regroup the sidebars (split the oversized guides group into Developer Guides / Security & Access / Integrations; fold builds into Build & Release). Augment: - dev-workflow: Local Setup (make dev-tools) + Quality Checks (phpstan, cs, gates). - build_system: Composer Dependencies section (committed prod-only vendor, committed lock, dev tools via composer install, no build-time vendor step). en/ru parity: - Apply the same structure, fixes and pattern to docs/ru/ (translated), including a new Russian ucs-integration.md. The en and ru file sets are now identical.
183 lines
6.6 KiB
Markdown
183 lines
6.6 KiB
Markdown
# Контексты Bootstrap
|
|
|
|
`XC_Bootstrap` — единая точка входа для инициализации системы.
|
|
Каждый контекст загружает ровно тот набор подсистем, который нужен для конкретного типа запроса.
|
|
Контекст передаётся как значение enum `BootContext`.
|
|
|
|
---
|
|
|
|
## Быстрый справочник
|
|
|
|
| Enum-значение | Где используется |
|
|
| --------------------- | ---------------------------------------- |
|
|
| `BootContext::MINIMAL` | Скрипты, которым нужны только пути/конфиг |
|
|
| `BootContext::CLI` | Cron-задачи, CLI-команды |
|
|
| `BootContext::STREAM` | Стриминговые эндпоинты (live, vod, ts) |
|
|
| `BootContext::ADMIN` | Панель администратора / реселлера |
|
|
|
|
---
|
|
|
|
## Что загружает каждый контекст
|
|
|
|
### BootContext::MINIMAL
|
|
|
|
Загружает только базовые константы и конфигурацию. База данных не подключается.
|
|
|
|
**Включает:**
|
|
|
|
- Composer PSR-4 автозагрузчик (`vendor/autoload.php`)
|
|
- Константы путей (`MAIN_HOME`, `INCLUDES_PATH`, `CONFIG_PATH`, …)
|
|
- Logger (`Logger::init()`)
|
|
- Функции ошибок (`generateError()`, `generate404()`)
|
|
|
|
**Не включает:** DB, Redis, сессии, Translator, Admin API.
|
|
|
|
**Пример:**
|
|
|
|
```php
|
|
require_once '/home/xc_vm/bootstrap.php';
|
|
XC_Bootstrap::boot(BootContext::MINIMAL);
|
|
|
|
// Теперь доступны MAIN_HOME, Logger
|
|
echo MAIN_HOME;
|
|
```
|
|
|
|
---
|
|
|
|
### BootContext::CLI
|
|
|
|
Предназначен для cron-заданий и CLI-команд. Добавляет подключение к БД поверх `MINIMAL`.
|
|
|
|
**Включает** (дополнительно к MINIMAL):
|
|
|
|
- Подключение к базе данных
|
|
- `LegacyInitializer` (легаси-глобалы для функций из `www/`)
|
|
- Redis (по умолчанию: `false`; включить через опцию `'redis' => true`)
|
|
- `cli_set_process_title()` (если передана опция `'process'`)
|
|
|
|
**Пример:**
|
|
|
|
```php
|
|
require_once '/home/xc_vm/bootstrap.php';
|
|
XC_Bootstrap::boot(BootContext::CLI, [
|
|
'cached' => true,
|
|
'process' => 'xc_vm: my-cron-job',
|
|
]);
|
|
```
|
|
|
|
---
|
|
|
|
### BootContext::STREAM
|
|
|
|
Лёгкий контекст для стриминговых эндпоинтов. Инициализирует только то, что нужно для горячего пути стриминга.
|
|
|
|
**Включает** (дополнительно к MINIMAL):
|
|
|
|
- Подключение к базе данных (`cached: true` — всегда)
|
|
- Flood-protection и проверка хоста
|
|
|
|
**Не включает:** Redis, Translator, Admin API, сессии.
|
|
|
|
> Это намеренное ограничение. Любой дополнительный код в горячем пути увеличивает задержку стриминга.
|
|
|
|
**Пример:**
|
|
|
|
```php
|
|
require_once '/home/xc_vm/bootstrap.php';
|
|
XC_Bootstrap::boot(BootContext::STREAM, ['cached' => true]);
|
|
```
|
|
|
|
---
|
|
|
|
### BootContext::ADMIN
|
|
|
|
Полная инициализация для панели администратора и реселлера.
|
|
|
|
**Включает** (дополнительно к MINIMAL):
|
|
|
|
- PHP-сессия (с параметром `SameSite=Strict`)
|
|
- Подключение к базе данных (`cached: false`)
|
|
- `LegacyInitializer`
|
|
- Redis
|
|
- Admin API / Reseller API
|
|
- Translator (локализация)
|
|
- Shutdown-обработчик
|
|
- Статусные константы
|
|
- Admin globals
|
|
|
|
**Пример:**
|
|
|
|
```php
|
|
require_once '/home/xc_vm/bootstrap.php';
|
|
XC_Bootstrap::boot(BootContext::ADMIN);
|
|
```
|
|
|
|
---
|
|
|
|
## Матрица подсистем
|
|
|
|
| Подсистема | MINIMAL | CLI | STREAM | ADMIN |
|
|
| ------------------ | :-----: | :-: | :----: | :---: |
|
|
| Константы / пути | ✅ | ✅ | ✅ | ✅ |
|
|
| Logger | ✅ | ✅ | ✅ | ✅ |
|
|
| Flood-protection | — | — | ✅ | ✅ |
|
|
| Проверка хоста | — | — | ✅ | ✅ |
|
|
| База данных | — | ✅ | ✅ | ✅ |
|
|
| LegacyInitializer | — | ✅ | — | ✅ |
|
|
| Redis | — | opt | — | ✅ |
|
|
| PHP-сессия | — | — | — | ✅ |
|
|
| Admin API | — | — | — | ✅ |
|
|
| Translator | — | — | — | ✅ |
|
|
|
|
---
|
|
|
|
## Опции `boot()`
|
|
|
|
```php
|
|
XC_Bootstrap::boot(BootContext $context, array $options = []);
|
|
```
|
|
|
|
| Опция | Тип | Умолчание | Описание |
|
|
| ------------ | ---------- | ---------------------------- | ------------------------------------- |
|
|
| `cached` | `bool` | `true` (STREAM), `false` (остальные) | Загружать настройки из кеша |
|
|
| `redis` | `bool` | `true` (ADMIN), `false` (остальные) | Подключать Redis |
|
|
| `process` | `string` | `''` | Имя процесса для `cli_set_process_title()` |
|
|
| `shutdown` | `callable` | встроенный | Замена стандартного shutdown-обработчика |
|
|
|
|
---
|
|
|
|
## Идемпотентность
|
|
|
|
`boot()` выполняется **один раз за процесс** — повторные вызовы игнорируются.
|
|
|
|
```php
|
|
XC_Bootstrap::boot(BootContext::ADMIN);
|
|
XC_Bootstrap::boot(BootContext::CLI); // проигнорировано
|
|
```
|
|
|
|
Для сброса состояния (только в тестах):
|
|
|
|
```php
|
|
XC_Bootstrap::reset();
|
|
```
|
|
|
|
---
|
|
|
|
## Публичные методы
|
|
|
|
```php
|
|
XC_Bootstrap::getContext(): ?BootContext // текущий контекст
|
|
XC_Bootstrap::isBooted(): bool // выполнен ли boot()
|
|
XC_Bootstrap::isCli(): bool // работает ли в CLI
|
|
XC_Bootstrap::getDatabase(): ?Database
|
|
XC_Bootstrap::getContainer(): ServiceContainer
|
|
```
|
|
|
|
## Связанные файлы
|
|
|
|
| Файл | Роль |
|
|
| --- | --- |
|
|
| `src/bootstrap.php` | Определяет MAIN_HOME, подключает автозагрузчик Composer, бутит контекст |
|
|
| `src/Core/Enum/BootContext.php` | Enum контекста загрузки |
|
|
| `src/Core/Init/LegacyInitializer.php` | Инициализация под каждый контекст |
|