Eu tenho um script PHP que faz algum processamento de dados. O tempo que leva para o script terminar todo o trabalho é baseado na entrada do usuário. Não é incomum que sejam necessários 5 a 15 minutos de processamento.
No apache, tudo funciona bem, mas no Nginx a conexão acabou de ser fechada. Quando o tempo de processamento é baixo, tudo está bem. O problema vem nos pedidos longos ...
Não há erro em nenhum dos logs. Eu suspeito que o navegador fecha a conexão.
Eu cheirei os cabeçalhos e parece que o Nginx não envia nenhuma resposta até que o processamento seja concluído. Nem um único cabeçalho.
Eu tentei enviar cabeçalhos do script, mas parece que o nginx armazena todos eles.
Depois, desabilitei o buffer de saída do PHP e habilitei o flush implícito. Desativei a compactação gzip e o zlib. Eu minimizo FAST_CGI_BUFFERS para o mínimo permitido, que é:
fastcgi_buffers 2 1k;
fastcgi_buffer_size 1k;
fastcgi_busy_buffers_size 1k;
fastcgi_max_temp_file_size 0;
Ainda assim, ele se recusa a enviar cabeçalhos ...
Então, só para provar meu caso, em um dos loops dentro do código, fiz um var_export para um dos objetos ...
BOOM !!! - funciona ...
Alguém pode pensar em uma solução mais elegante?
Obrigado.
Atualização de 19 de agosto
Algo louco está acontecendo. Depois que eu tentei depurá-lo por 2 dias inteiros sem qualquer sorte, tentei algo que deveria ter feito antes.
Eu tentei essa configuração no Linode e funciona !!!
Então, provavelmente, o problema está em algum lugar na configuração do Ubuntu ... Não tenho a menor idéia de onde procurar.