register_shutdown_function
En esta página
register_shutdown_function
Registra una función de retrollamada para ejecución al cierre
Descripción#
register_shutdown_function(callable $callback, mixed ...$args): void
```php
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.
> [!CAUTION]
> Desde PHP 8.4.0, una llamada a `exit` sin parámetros dentro de una función de cierre registrada restablece el código de salida a `0`. Llamar a `exit` con un estado explícito sobrescribe el código de salida anterior en todas las versiones.
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 con `register_shutdown_function`
```php
Notas#
[!NOTE] El directorio de trabajo del script puede cambiar en la función de cierre bajo algunos servidores web, por ejemplo Apache.
[!NOTE] 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_signalpara instalar un manejador para un SIGTERM que utilice la funciónexitpara terminar correctamente.[!NOTE] 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_timealcanza su límite mientras una función de cierre está en ejecución, no será interrumpida.
Véase también#
auto_append_file, exit, fastcgi_finish_request, La sección sobre la gestión de conexiones