O Nginx e o Apache com o desempenho do MPM-Event worker estão usando um daemon dedicado (serviço) para executar o PHP. Você já configurou esse daemon no caminho certo. Mas agora você tem que configurar o servidor web para esperar por um tempo tão longo. A configuração mágica pode ser feita com a configuração fastcgi_read_timeout .
Configure o Nginx para aguardar algum tempo ...
location ~ \.php$ {
# allow logging
access_log /var/log/nginx/access.log vhosts;
# include defaults
include fastcgi_params;
# define connection to php-fpm
fastcgi_keep_conn on;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
# php script name
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
# set buffers
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
# allow web-server to wait for a long time before giving up
fastcgi_read_timeout 3600s;
}
Não posso recomendar a ativação dessa configuração para um servidor da web acessível ao público.
Se houver uma tarefa que precise de algum tempo - você deve executar esta tarefa via CLI (interface de linha de comando). Um bom exemplo pode ser a geração de um sitemap.xml do Google de um site enorme.
Exemplo:
Execute o script via linha de comando ...
cd /var/www/mysite/ ; php generateSitemap.php
Defina um cronjob para executar o script diariamente via linha de comando ...
0 4 * * * cd /var/www/mysite/ ; php generateSitemap.php