array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.register-shutdown-function.php', 1 => 'register_shutdown_function', ), 'up' => array ( 0 => 'ref.funchand.php', 1 => 'Функции управления функциями', ), 'prev' => array ( 0 => 'function.get-defined-functions.php', 1 => 'get_defined_functions', ), 'next' => array ( 0 => 'function.register-tick-function.php', 1 => 'register_tick_function', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/funchand/functions/register-shutdown-function.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
register_shutdown_function — Регистрирует функцию, которая выполнится при завершении работы скрипта
Регистрирует функцию 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
истечёт во время работы завершающей функции, процесс не будет завершён.