ignore_user_abort – Script PHP assíncrono

Hoje vamos falar de script PHP assíncrono usando ignore_user_abort!

Algumas vezes precisamos fazer alguns scripts que irão rodar em background. Um exemplo seria, o envio em massa de emails.

Porém, esse processo pode ser um pouco lento, e o ideal é não deixar o usuário esperando o retorno do sistema, após concluir o envio de 1.000, 2.000 ou seja lá o tamanho da base de e-mails.

Diferença entre Script e Compilado

O PHP é uma linguagem desenvolvida em scripts. Ou seja, a cada requisição, todas as instruções são lidas e executadas, em forma de script.

No caso de um site ou sistema web, a cada transação, mudança de página ou requisição, o PHP encerra a execução do script, mesmo sendo um ajax.

Usando a função ignore_user_abort

Para contornar esse detalhe do PHP, existe a função nativa do PHP ignore_user_abort.

Ela poderá receber um parâmetro booleano, não obrigatório, caso o parâmetro não for informado, retornará a situação atual da função.

Para o funcionamento da função, ela deve ser chamada no início do script PHP. A função torna a execução do script assíncrono, ou seja, ele irá executar as informações enquanto o servidor php estiver online.

ignore_user_abort(1); // Execute o script em background, de forma continua
set_time_limit(0); // executando de timeout o script, use com cuidado...
$interval = 60 * 15; //O intervalo que o script terá para executar, a cada 15 minutos
do{
// add the script that has to be ran every 15 minutes here
// ...
sleep($interval); // wait 15 minutes
}while(true);

Referência: php.net

Seu comentário é muito importante! Conte pra gente o que você achou desse conteúdo.