Nginx + PHP-FPM 客户端中止

Nginx + PHP-FPM 客户端中止

这是我的配置(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;
    }

}

以及 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

我有一个 PHP 脚本,用于发送实时数据到客户端。当客户端关闭连接时,我可以看到PID 在 15-20 秒后关闭。我认为这是由于缓冲区和 nginx 的工作方式造成的。

例如,如果我禁用 nginx/fastcgi 缓冲通过关闭 fastcgi_buffering 客户端的连接正在被立即关闭

然而,nginx 缓冲对我来说非常重要,它可以减少客户端的任何延迟(如果发现)。

那么 nginx/php 有什么办法可以即刻即使我已打开缓冲,当客户端断开连接时是否会收到事件?

谢谢

相关内容