register_shutdown_function

(PHP 4, PHP 5, PHP 7, PHP 8)

register_shutdown_functionRegistra uma função para ser executada no final da execução do script

Descrição

register_shutdown_function(callable $callback, mixed ...$args): void

Registra a função nomeada por callback para ser executada após o término da execução do script ou após a chamada a exit().

Múltiplas chamadas a register_shutdown_function() podem ser feitas, e cada uma irá ser chamada na mesma ordem em que foram registradas. Se exit() for chamada dentro de uma função de desligamento, o processamento irá parar completamente e nenhuma outra função de desligamento será chamada.

As próprias funções de desligamento também podem chamar register_shutdown_function() para adicionar uma função de desligamento ao final da fila.

Parâmetros

callback

A função de desligamento a ser registrada.

As chamadas às funções de desligamento são executadas como parte da requisição, portanto é possível enviar resultados a partir delas e acessar buffers de saída.

args

É possível passar parâmetros para a função de desligamento passando parâmetros adicionais.

Valor Retornado

Nenhum valor é retornado.

Exemplos

Example #1 Exemplo de register_shutdown_function()

<?php
function desligamento()
{
    // Esta é uma função de desligamento, aqui
    // podem ser feitas as últimas operações
    // antes que o script seja concluído.

    echo 'Script executado com sucesso', PHP_EOL;
}

register_shutdown_function('desligamento');
?>

Notas

Note:

O diretório de trabalho do script pode mudar dentro da função de desligamento em alguns servidores web, por exemplo, no Apache.

Note:

As funções de desligamento não serão executadas se o processo for encerrado com um sinal SIGTERM ou SIGKILL. Embora um SIGKILL não possa ser interceptado, pode ser usada a função pcntl_signal() para instalar um manipulador para um SIGTERM que usa exit() para terminar de forma limpa.

Note:

As funções de desligamento são executadas separadamente do tempo monitorado por max_execution_time. Isso significa que mesmo que um processo seja encerrado por ter sido executado por muito tempo, as funções de desligamento ainda serão chamadas. Além disso, se o max_execution_time acabar enquanto uma função de desligamento estiver em execução, ela não será encerrada.

Veja Também