register_shutdown_function

(PHP 4, PHP 5, PHP 7, PHP 8)

register_shutdown_functionРегистрирует функцию, которая выполнится при завершении работы скрипта

Описание

register_shutdown_function(callable $callback, mixed ...$args): void

Регистрирует функцию callback, которая выполнится после завершения работы скрипта или при вызове функции exit().

Возможна регистрация нескольких подобных функций с помощью 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 истечёт во время работы завершающей функции, процесс не будет завершён.

Смотрите также