register_shutdown_function
(PHP 4, PHP 5, PHP 7, PHP 8)
register_shutdown_function — Registra una función de retrollamada para ejecución al cierre
Descripción
Varios llamados a register_shutdown_function() son
posibles en el mismo script, y las funciones serán llamadas en el
mismo orden en que son registradas. Si se llama
exit()
durante una de las funciones de cierre, el proceso será definitivamente
detenido, sin que las otras funciones sean llamadas.
Las funciones de cierre pueden también llamar a la función
register_shutdown_function() ellas mismas para añadir una
función de cierre al final de la cola.
Parámetros
callback
-
La función de retrollamada a registrar.
La función de retrollamada es ejecutada como parte de la
petición, por lo tanto, es posible enviar algo a la salida
desde esta última, así como acceder a los buffers de salida.
args
-
Es posible pasar argumentos a las funciones de cierre configurando estos argumentos adicionales.
Valores devueltos
No se retorna ningún valor.
Ejemplos
Ejemplo #1 Ejemplo con register_shutdown_function()
<?php
function shutdown()
{
// Aquí está nuestra función shutdown
// en la cual podemos realizar
// todas las últimas operaciones
// antes del fin del script.
echo 'Script ejecutado con éxito', PHP_EOL;
}
register_shutdown_function('shutdown');
?>
Notas
Nota:
El directorio de trabajo del script puede cambiar en la función de cierre
bajo algunos servidores web, por ejemplo Apache.
Nota:
Las funciones de cierre no serán ejecutadas si el proceso es terminado
con un señal SIGTERM o SIGKILL. Aunque no se puede interceptar
un SIGKILL, se puede usar la función pcntl_signal()
para instalar un manejador para un SIGTERM que utilice la función
exit() para terminar correctamente.
Nota:
Las funciones de cierre se ejecutan por separado del tiempo seguido por
max_execution_time. Esto significa
que incluso si un proceso es terminado por haber funcionado demasiado tiempo, las
funciones de cierre serán siempre llamadas. Además, si el
max_execution_time
alcanza su límite mientras una función
de cierre está en ejecución, no será interrumpida.