Aqui está minha configuração (Nginx 1.7.x):
server {
listen 8000;
index index.php index.html index.htm;
root /var/www/;
server_tokens off;
chunked_transfer_encoding off;
location ~ \.php$ {
try_files $uri =404;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
fastcgi_keep_conn on;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
E configuração do php-fpm:
[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.allowed_clients = 127.0.0.1
pm = ondemand
pm.max_children = 6000;
pm.process_idle_timeout = 5;
chdir = /
security.limit_extensions = .php
php_flag[display_errors] = on
php_flag[display_startup_errors] = on
Eu tenho um script PHP do qual eu envio LIVE DATA para o cliente .. Quando o cliente fecha a conexão, eu vejo que o PID está sendo fechado após 15-20 segundos . Eu acho que isso é devido ao buffer e à maneira como o nginx funciona.
Por exemplo, se eu desabilitar o buffer nginx / fastcgi definindo fastcgi_buffering a conexão do cliente será fechada instantaneamente .
No entanto, o buffering nginx é muito importante para mim para reduzir qualquer atraso do cliente, se encontrado.
Então, existe alguma maneira de o nginx / php conseguir instantaneamente obter o evento quando um cliente se desconecta mesmo quando estou com o buffer ativado?
Obrigado