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.
6.0 KiB
Контексты начальной загрузки
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-интерфейсы администратора.
require_once '/home/xc_vm/bootstrap.php';
XC_Bootstrap::boot(BootContext::MINIMAL);
Загрузочный текст::CLI
Используется для задач cron и CLI.
Добавляет инициализацию базы данных и устаревшего ядра через MINIMAL.
Включает в себя:
- Подключение к базе данных
LegacyInitializer- необязательный Redis (
'redis' => true) - необязательный заголовок процесса (
'process' => '...')
require_once '/home/xc_vm/bootstrap.php';
XC_Bootstrap::boot(BootContext::CLI, [
'cached' => true,
'process' => 'xc_vm: my-job',
]);
BootContext::ПОТОК
Облегченный контекст для конечных точек потоковой передачи с высокой нагрузкой.
Включает в себя:
- Подключение к базе данных (
cached=true) - защита от наводнений и проверка хостинга
Не включает: Redis, переводчик, API-интерфейсы администратора, сеансы.
require_once '/home/xc_vm/bootstrap.php';
XC_Bootstrap::boot(BootContext::STREAM, ['cached' => true]);
BootContext::АДМИНИСТРАТОР
Полная инициализация панели администратора/реселлера.
Включает в себя:
- защищенный сеанс (
SameSite=Strict) - Подключение к базе данных (
cached=false) LegacyInitializer- Redis
- API-интерфейсы администратора/реселлера
- переводчик
- обработчик завершения работы
- постоянные состояния и глобальные параметры администратора
require_once '/home/xc_vm/bootstrap.php';
XC_Bootstrap::boot(BootContext::ADMIN);
Матрица подсистемы
| Подсистема | минимальный | КЛИ | течение | администратор |
|---|---|---|---|---|
| Константы/пути | ✅ | ✅ | ✅ | ✅ |
| Лесоруб | ✅ | ✅ | ✅ | ✅ |
| Защита от наводнений | — | — | ✅ | ✅ |
| Проверка хостинга | — | — | ✅ | ✅ |
| База данных | — | ✅ | ✅ | ✅ |
| Инициализатор наследия | — | ✅ | — | ✅ |
| Redis | — | выбирать | — | ✅ |
| Сессия | — | — | — | ✅ |
| API администратора | — | — | — | ✅ |
| Переводчик | — | — | — | ✅ |
boot() параметры
XC_Bootstrap::boot(BootContext $context, array $options = []);
| Вариант | Тип | По умолчанию | Описание |
|---|---|---|---|
cached |
bool |
true для ПОТОКА, false в противном случае |
Использовать кэшированные настройки |
redis |
bool |
true для АДМИНИСТРАТОРА, false в противном случае |
Подключение Redis |
process |
string |
'' |
Название процесса для CLI |
shutdown |
callable |
встроенный | Переопределить обратный вызов завершения работы |
Идемпотентность
boot() выполняется один раз для каждого процесса. Повторные вызовы игнорируются.
XC_Bootstrap::boot(BootContext::ADMIN);
XC_Bootstrap::boot(BootContext::CLI); // ignored
Для проведения тестов:
XC_Bootstrap::reset();
Общедоступные методы
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 |
Унаследованная инициализация для каждого контекста |