Volver a la página principal
miércoles 25 septiembre 2024
13

Cómo ejecutar una función cuando el script termine en PHP

La función register_shutdown_function() en PHP se utiliza para registrar una función que se ejecutará automáticamente cuando el script termine. Esto incluye tanto cuando el script finaliza de manera normal como cuando se produce un error fatal. Es útil para ejecutar código de limpieza o registrar errores, entre otras cosas.

¿Qué es register_shutdown_function() en PHP?

register_shutdown_function() permite definir una función o método que se ejecutará justo antes de que el script termine, independientemente de si el final del script fue causado por un error, una llamada a exit() o simplemente por el final normal de la ejecución. Esta función es particularmente útil para realizar tareas como cerrar conexiones, limpiar recursos o registrar fallos.

Ejemplos de uso de register_shutdown_function() en PHP

Ejemplo básico de uso

<?php
function shutdownFunction() {
    echo "El script ha terminado.\n";
}

register_shutdown_function('shutdownFunction');

echo "Este es el final del script.\n";
?>

Salida:

Este es el final del script.
El script ha terminado.

Manejar errores fatales

Puedes usar register_shutdown_function() para registrar errores fatales que normalmente no podrías capturar con otras funciones de manejo de errores.

<?php
function shutdownFunction() {
    $error = error_get_last(); // Obtiene el último error si existe

    if ($error !== null) {
        echo "Error capturado: " . $error['message'] . "\n";
    }
}

register_shutdown_function('shutdownFunction');

// Forzar un error fatal
echo 10 / 0;
?>

Salida:

Error capturado: Division by zero

Registrar múltiples funciones de apagado

Puedes registrar más de una función con register_shutdown_function(), y se ejecutarán en el orden en que se registraron.

<?php
function shutdownFunction1() {
    echo "Función de apagado 1\n";
}

function shutdownFunction2() {
    echo "Función de apagado 2\n";
}

register_shutdown_function('shutdownFunction1');
register_shutdown_function('shutdownFunction2');

echo "El script está a punto de terminar.\n";
?>

Salida:

El script está a punto de terminar.
Función de apagado 1
Función de apagado 2

Consideraciones

  • Errores fatales: Esta función es útil para capturar errores fatales o realizar tareas finales de limpieza, ya que los controladores de errores normales no pueden manejar errores fatales.
  • No puede detener el apagado: La función registrada no puede detener el apagado del script; solo permite ejecutar un código antes de que el script finalice por completo.
  • Registro de múltiples funciones: Puedes registrar varias funciones de apagado que se ejecutarán en el orden en que fueron registradas.

Referencia oficial

Para más detalles, consulta la documentación oficial de PHP: Documentación de register_shutdown_function()

Etiquetas:
php
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer