Жизненный цикл запроса
HTTP-запрос проходит путь от браузера до сервера и обратно.
Bitrix Framework участвует в этом процессе: он получает запрос, определяет, как его обработать, и запускает жизненный цикл страницы.
Получить запрос
Веб-сервер принимает HTTP-запрос, который содержит метод, путь к ресурсу, версию протокола и другие заголовки.
Определить способ обработки
Сервер и путь запроса определяют, как обрабатывать запрос — через роутинг или AJAX-контроллер.
Если запрашиваемый файл существует, сервер выполняет его напрямую — запрос обрабатывается через AJAX-контроллер.
Если файл не найден и настроено перенаправление в /bitrix/routing_index.php, запрос проходит через роутинг.
Роутинг
Система ищет совпадение URL в правилах маршрутизации. Роутинг направляет запрос на нужный обработчик.
Подробную информацию читайте в статье Роутинг.
AJAX-контроллер
Контроллер обрабатывает запросы напрямую через PHP-файл. Маршрутизация не активируется, шапка и подвал сайта не подключаются. Это позволяет работать только с нужными данными в фоне и обновлять часть страницы без полной перезагрузки.
О жизненном цикле контроллера читайте в статье Контроллеры.
Запустить жизненный цикл страницы
После того как запрос направлен на конкретную страницу, начинается ее жизненный цикл. Страница в Bitrix Framework — это PHP-файл, который состоит из трех частей. Эти части помогают управлять подключениями, настройками и отображением контента в рамках одного запроса.
Структура страницы:
-
header — пролог,
-
workarea — тело страницы,
-
footer — эпилог.
Пример стандартной страницы:
<?php require($_SERVER['DOCUMENT_ROOT'].'/bitrix/header.php'); ?>
#WORK_AREA#
<?php require($_SERVER['DOCUMENT_ROOT'].'/bitrix/footer.php'); ?>
Если нужна страница без шаблона сайта (например AJAX-обработчик), то достаточно подключить только служебные части пролога и эпилога:
<?php require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); ?>
#WORK_AREA#
<?php require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_after.php'); ?>
Подготовить контекст
Служебная часть пролога — файл /bitrix/modules/main/include/prolog_before.php
На этом этапе происходит подготовка к выполнению страницы. Система подключает необходимые для работы ядра файлы и устанавливает соединение с базой данных. Здесь также определяется текущий сайт и его настройки, инициализируются общие функции и обработчики событий.
Ключевые процессы инициализации в служебной части пролога:
-
Подключение служебных файлов с основными библиотеками (
/lib/loader.php), автозагрузкой классов(/include/autoload.php) и глобальных функций (/tools.php). -
Подключение
/bitrix/php_interface/dbconn.php, объявление переменных для соединения с базой данных ($DBType, $DBDebug, $DBDebugToFile, $DBHost, $DBName, $DBLogin, $DBPassword), констант для отладки и прав доступа (/include/constants.php). -
Соединение с базой данных (
$DB), а также обработка ошибки соединения (/bitrix/php_interface/dbconn_error.php). -
Подключение
/bitrix/php_interface/after_connect.phpдля выполнения пользовательского кода сразу после установления соединения с базой данных. -
Определение текущего сайта. На данном этапе определяется
$APPLICATION, константыSITE_ID, LANGUAGE_ID, SITE_CHARSET, SITE_SERVER_NAMEи другие. Если к этому моменту определена константа с кодом сайтаSITE_ID, то сайт не будет определяться по текущей папке и доменному имени, а все остальные константы будут определены для этого сайта. -
Подключение пользовательских обработчиков событий:
/local/php_interface/ID сайта/init.php
/local/php_interface/init.php
/bitrix/php_interface/ID сайта/init.php
/bitrix/php_interface/init.php -
Проверка и запуск агентов (
CAgent::CheckAgents) и отправка почтовых событий (\Bitrix\Main\Mail\EventManager::checkEvents). -
Открытие сессии. Объявление всех сессионных переменных (
$_SESSION). -
Выполнение события
OnPageStart. -
Авторизация пользователя. На этом этапе выполняется проверка и авторизация пользователя с последующем объявлением
$USER. -
Определение шаблона сайта (
SITE_TEMPLATE_ID). -
Выполнение события
OnBeforeProlog. -
Проверка прав доступа. В случае если прав недостаточно, выводится форма авторизации и страница завершает выполнение.
-
Начало буферизация вывода.
-
Выполнение события
OnProlog.
Подключить шапку
Визуальная часть пролога — файл /bitrix/modules/main/include/prolog_after.php
На этом этапе подключается визуальная часть страницы, которая включает в себя элементы интерфейса, такие как шапка сайта. Это важно для создания единого стиля и структуры страницы, которые будут видны пользователю.
Этап пропускается при обработке запроса через AJAX-контроллер.
Основные процессы визуальной части пролога:
-
Проверка параметра «Закрытие публичной части» из настроек главного модуля.
-
Загрузка шаблона сайта (
/bitrix/templates/ID шаблона сайта/header.php). -
Отправка
OnFileRewrite
Сформировать контент
В этой части происходит основная работа с контентом, который отображается для пользователя. Это центральная часть страницы, где размещается HTML-код, PHP-скрипты и другие элементы, необходимые для отображения информации и взаимодействия с пользователем.
Здесь может происходить:
-
отображение контента — вывод текстов, изображений, видео и других медиафайлов.
-
взаимодействие с пользователем — формы для ввода данных, кнопки и другие элементы интерфейса.
-
выполнение бизнес-логики — обработка данных, выполнение вычислений, взаимодействие с базой данных.
-
подключение компонентов — использование готовых модулей и компонентов для добавления функциональности: каталоги товаров, новостные ленты и так далее.
Подключить подвал
Визуальная часть эпилога — файл /bitrix/modules/main/include/epilog_before.php
На этом этапе подключаются элементы, которые завершают визуальное оформление страницы, такие как подвал сайта. Это помогает завершить структуру страницы и добавить необходимые элементы интерфейса.
Этап пропускается при обработке запроса через AJAX-контроллер.
Основные процессы визуальной части эпилога:
-
Вызов функции
CMain::ShowSpreadCookieHTML -
Подключение
/bitrix/templates/ID шаблона сайта/footer.php
Очистить ресурсы
Служебная часть эпилога — файл /bitrix/modules/main/include/epilog_after.php
На завершающем этапе происходит окончательная обработка страницы. Система завершает буферизацию и работу приложения. Это важно для завершения всех процессов и освобождения ресурсов.
Основные процессы служебной части эпилога:
-
Выполнение события
OnEpilog. -
Завершение буферизации страницы и выполнение
OnEndBufferContent. -
Выполнение события
OnAfterEpilog. -
Завершение работы приложения, в том числе закрытие соединения с базой данных (
Main\Application::getInstance()->end()).