(PHP 4, PHP 5)
register_shutdown_function — Registrar una función para que sea ejecutada al cierre
Registra una llamada de retorno dada por callback
para ser ejecutada después
de que finalice la ejecución del scrip o se llame a exit().
Se pueden hacer múltiples llamadas a register_shutdown_function(), y cada una será llamada en el mismo orden en el que fueron registradas. Si se llama a exit() dentro de una función de cierre registrada, el procesamiento se detendrá completamente y no se llamarán a otras funciones de cierre registradas.
callback
La llamada de retorno de cierre a registrar.
Las llamadas de retorno de cierre se ejecutan como parte de una petición, por lo que es posible enviar salidas desde ellas y acceder a los buffers de salida.
parameter
Es posible pasar parámetros a la función de cierre pasando parámetros adicionales.
...
No devuelve ningún valor.
Se generará un error de nivel E_WARNING
si no es posible llamar a
la llamada de retorno.
Versión | Descripción |
---|---|
4.1.0 | Las funciones de cierre ahora son llamadas como parte de la petición. En versiones anterior bajo Apache, las funciones de cierre registradas eran llamadas después de que la petición hubiera sido completada (incluyendi en envío de cualquier buffer de salida), por lo que no era posible enviar una salida al navegador usando echo o print, o recuperar el contenido de ningún buffer de salida usando ob_get_contents(). Las cabeceras también eran enviadas siempre. |
Ejemplo #1 Ejemplo de register_shutdown_function()
<?php
function cierre()
{
// Esta es nuestra función de cierre,
// aquí podemos hacer las últimas operaciones
// antes de que el script sea completado.
echo 'Script ejecutado con éxito', PHP_EOL;
}
register_shutdown_function('cierre');
?>
Nota:
El directorio de trabajo del script se puede cambiar dentro de la función de cierre bajo algunos servidores web, p.ej. Apache.
Nota:
Las funciones de cierre no serán ejecutadas si el proceso es terminado por señales SIGTERM o SIGKILL. Pese a que no es posible interceptar una señal SIGKILL, es posible utilizar pcntl_signal() para registrar un manejador para SIGTERM que utilice exit() para terminar limpiamente.