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.