Parece que sua única opção é definir fastcgi_read_timeout
para um valor muito grande (como 1h ou 1d) .
Existe uma maneira de desativar o tempo limite de leitura do FastCGI? (fastcgi_read_timeout)
Configurar para zero não funciona e apenas causa um tempo limite imediato.
A razão pela qual eu preciso contornar o tempo limite é por causa da forma como os relatórios são gerados pelo sistema que usamos. Como o forking não é possível no PHP-FPM (pctnl_fork () é desativado), o processamento do relatório é feito assim que a solicitação é enviada. Isso faz com que a leitura seja interrompida até que o processamento seja concluído pelo sistema.
Parece que sua única opção é definir fastcgi_read_timeout
para um valor muito grande (como 1h ou 1d) .
Como gostaria de resolver o problema:
Quando o usuário envia uma solicitação para gerar um relatório, use exec("php report.php")
para executar o script de geração de relatório no modo CLI. Use algumas informações identificáveis como argumentos, é claro.
Carregue uma página 'Aguarde' para o usuário, usando o AJAX para verificar se o relatório é feito usando ps w
. Procure o nome do script e os argumentos usados.
Uma vez feito, redirecione para a página do relatório.
Desta forma, você evita que os usuários atualizem a atualização se a espera ficar muito longa (tornando-a ainda mais longa), além de informar ao usuário que o processo ainda está em execução.