(PHP 4, PHP 5, PHP 7, PHP 8)
register_shutdown_function — Registra una función de retrollamada para ejecución al cierre
Registra una función de retrollamada callback
para ejecución al cierre o cuando
exit() es llamado.
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.
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.
No devuelve ningún valor.
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');
?>
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.