Жизненный цикл запроса

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

На этом этапе происходит подготовка к выполнению страницы. Система подключает необходимые для работы ядра файлы и устанавливает соединение с базой данных. Здесь также определяется текущий сайт и его настройки, инициализируются общие функции и обработчики событий.

Ключевые процессы инициализации в служебной части пролога:

  1. Подключение служебных файлов с основными библиотеками (/lib/loader.php), автозагрузкой классов(/include/autoload.php) и глобальных функций (/tools.php).

  2. Подключение /bitrix/php_interface/dbconn.php, объявление переменных для соединения с базой данных ($DBType, $DBDebug, $DBDebugToFile, $DBHost, $DBName, $DBLogin, $DBPassword), констант для отладки и прав доступа (/include/constants.php).

  3. Соединение с базой данных ($DB), а также обработка ошибки соединения (/bitrix/php_interface/dbconn_error.php).

  4. Подключение /bitrix/php_interface/after_connect.php для выполнения пользовательского кода сразу после установления соединения с базой данных.

  5. Определение текущего сайта. На данном этапе определяется $APPLICATION, константы SITE_ID, LANGUAGE_ID, SITE_CHARSET, SITE_SERVER_NAME и другие. Если к этому моменту определена константа с кодом сайта SITE_ID, то сайт не будет определяться по текущей папке и доменному имени, а все остальные константы будут определены для этого сайта.

  6. Подключение пользовательских обработчиков событий:
    /local/php_interface/ID сайта/init.php
    /local/php_interface/init.php
    /bitrix/php_interface/ID сайта/init.php
    /bitrix/php_interface/init.php

  7. Проверка и запуск агентов (CAgent::CheckAgents) и отправка почтовых событий (\Bitrix\Main\Mail\EventManager::checkEvents).

  8. Открытие сессии. Объявление всех сессионных переменных ($_SESSION).

  9. Выполнение события OnPageStart.

  10. Авторизация пользователя. На этом этапе выполняется проверка и авторизация пользователя с последующем объявлением $USER.

  11. Определение шаблона сайта (SITE_TEMPLATE_ID).

  12. Выполнение события OnBeforeProlog.

  13. Проверка прав доступа. В случае если прав недостаточно, выводится форма авторизации и страница завершает выполнение.

  14. Начало буферизация вывода.

  15. Выполнение события OnProlog.

Подключить шапку

Визуальная часть пролога — файл /bitrix/modules/main/include/prolog_after.php

На этом этапе подключается визуальная часть страницы, которая включает в себя элементы интерфейса, такие как шапка сайта. Это важно для создания единого стиля и структуры страницы, которые будут видны пользователю.

Этап пропускается при обработке запроса через AJAX-контроллер.

Основные процессы визуальной части пролога:

  1. Проверка параметра «Закрытие публичной части» из настроек главного модуля.

  2. Загрузка шаблона сайта (/bitrix/templates/ID шаблона сайта/header.php).

  3. Отправка OnFileRewrite

Сформировать контент

В этой части происходит основная работа с контентом, который отображается для пользователя. Это центральная часть страницы, где размещается HTML-код, PHP-скрипты и другие элементы, необходимые для отображения информации и взаимодействия с пользователем.

Здесь может происходить:

  • отображение контента — вывод текстов, изображений, видео и других медиафайлов.

  • взаимодействие с пользователем — формы для ввода данных, кнопки и другие элементы интерфейса.

  • выполнение бизнес-логики — обработка данных, выполнение вычислений, взаимодействие с базой данных.

  • подключение компонентов — использование готовых модулей и компонентов для добавления функциональности: каталоги товаров, новостные ленты и так далее.

Подключить подвал

Визуальная часть эпилога — файл /bitrix/modules/main/include/epilog_before.php

На этом этапе подключаются элементы, которые завершают визуальное оформление страницы, такие как подвал сайта. Это помогает завершить структуру страницы и добавить необходимые элементы интерфейса.

Этап пропускается при обработке запроса через AJAX-контроллер.

Основные процессы визуальной части эпилога:

  1. Вызов функции CMain::ShowSpreadCookieHTML

  2. Подключение /bitrix/templates/ID шаблона сайта/footer.php

Очистить ресурсы

Служебная часть эпилога — файл /bitrix/modules/main/include/epilog_after.php

На завершающем этапе происходит окончательная обработка страницы. Система завершает буферизацию и работу приложения. Это важно для завершения всех процессов и освобождения ресурсов.

Основные процессы служебной части эпилога:

  1. Выполнение события OnEpilog.

  2. Завершение буферизации страницы и выполнение OnEndBufferContent.

  3. Выполнение события OnAfterEpilog.

  4. Завершение работы приложения, в том числе закрытие соединения с базой данных (Main\Application::getInstance()->end() ).

Следующая