Жизненный цикл запроса
Инициализация веб-запроса выполняется в prolog_before.php, где определяются сайт и язык, стартует сессия, создается объект пользователя $USER и включается буферизация страницы. Фоновые задачи, отправка накопленных почтовых событий и агенты запускаются в финальной фазе Application::terminate() уже после отправки HTTP-ответа браузеру.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
Инициализация ядра
-
2
Обработка запроса
-
3
Формирование ответа
Материалы
Официальная документация
-
События Новая дока
Проверь себя
Обработчик OnPageStart падает с ошибкой «Call to a member function IsAuthorized() on null». Почему, и на какое событие переехать?
В момент OnPageStart объект $USER ещё не создан, он появляется сразу после этого события. Авторизация и шаблон сайта определены к OnBeforeProlog — туда и переносить код, которому нужен текущий пользователь.
Заказчик жалуется, что заголовок страницы, установленный из компонента в подвале шаблона, всё равно применяется, хотя тег title выведен в шапке. Как это работает?
Вывод страницы буферизуется. $APPLICATION->ShowTitle() ставит в буфер отложенную функцию через AddBufferContent(), а реальная подстановка происходит в EndBufferContent() в конце хита. Поэтому SetTitle() из любого места страницы успевает.
Почему нельзя писать в $_SESSION из init.php?
init.php подключается в include.php до старта сессии ядра: kernelSession->start() вызывается позже, перед OnPageStart. Всё, что записано раньше, потеряется или сломает старт сессии.
Чем фоновая задача через Application::addBackgroundJob() отличается от кода в конце страницы?
Она выполняется в Application::terminate() после отправки ответа и закрытия сессии, поэтому пользователь не ждёт. В том же месте в актуальном main запускаются агенты и отправка почтовых событий.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить