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.
6.6 KiB
Контексты 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.
Пример:
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')
Пример:
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, сессии.
Это намеренное ограничение. Любой дополнительный код в горячем пути увеличивает задержку стриминга.
Пример:
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
Пример:
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()
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() выполняется один раз за процесс — повторные вызовы игнорируются.
XC_Bootstrap::boot(BootContext::ADMIN);
XC_Bootstrap::boot(BootContext::CLI); // проигнорировано
Для сброса состояния (только в тестах):
XC_Bootstrap::reset();
Публичные методы
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 |
Инициализация под каждый контекст |