register_shutdown_function
(PHP 4, PHP 5, PHP 7, PHP 8)
register_shutdown_function — Регистрирует функцию, которая выполнится при завершении работы скрипта
Описание
Возможна регистрация нескольких подобных функций с помощью
register_shutdown_function(), при этом функции будут
выполняться в том порядке, в каком они были зарегистрированы.
Если вы вызовете exit() в одной из зарегистрированных
завершающих функций, процесс будет полностью остановлен и последующие
завершающие функции не будут вызваны.
Завершающие функции также могут сами вызывать register_shutdown_function(),
чтобы добавить функцию выключения в конец очереди.
Список параметров
callback
-
Регистрируемая завершающая функция.
Завершающие функции выполняются как часть запроса, поэтому
можно отправлять данные на вывод из них и получать доступ к буферизации вывода.
args
-
Можно передавать параметры в завершающую функцию, передав
дополнительные параметры.
Возвращаемые значения
Функция не возвращает значения после выполнения.
Примеры
Пример #1 Пример использования register_shutdown_function()
<?php
function shutdown()
{
// Это наша завершающая функция,
// здесь мы можем выполнить все последние операции
// перед тем как скрипт полностью завершится.
echo 'Скрипт успешно завершился', PHP_EOL;
}
register_shutdown_function('shutdown');
?>
Примечания
Замечание:
Рабочая директория скрипта может измениться внутри завершающей функции
на некоторых веб-серверах, например, Apache.
Замечание:
Функции, выполняемые при завершении скрипта, не будут выполнены, если процесс был убит
с сигналами SIGTERM или SIGKILL. Хотя вы и не можете перехватить SIGKILL, но
вы можете использовать функцию pcntl_signal(), чтобы
задать обработчик сигнала SIGTERM, который использует функцию exit(), чтобы
завершить скрипт правильно.
Замечание:
Завершающие функции выполняются отдельно от времени,
отслеживаемого max_execution_time.
Это означает, что даже если процесс будет завершён из-за слишком долгого выполнения,
завершающие функции всё равно будут вызваны.
Кроме того, если max_execution_time
истечёт
во время работы завершающей функции, процесс не будет завершён.