PHP-FPM长轮询配置

PHP-FPM长轮询配置,php,fpm,Php,Fpm,假设我对php fpm有以下配置: pm = dynamic pm.start_servers = 10 pm.max_children = 400 pm.min_spare_servers = 8 pm.max_spare_servers = 16 pm.process_idle_timeout = 10s 还可以说,每个用户都必须有一个无限长的轮询请求。如果我有10000个请求的限制,并且我有10000个用户连接到我的网站,这是否意味着我的服务器将永远挂起 另一个问题:服务器和子项与同步请

假设我对php fpm有以下配置:

pm = dynamic
pm.start_servers = 10
pm.max_children = 400
pm.min_spare_servers = 8
pm.max_spare_servers = 16
pm.process_idle_timeout = 10s
还可以说,每个用户都必须有一个无限长的轮询请求。如果我有10000个请求的限制,并且我有10000个用户连接到我的网站,这是否意味着我的服务器将永远挂起

另一个问题:
服务器
子项
同步请求
有何关系?是否每个请求都会产生一个新的进程?
服务器
子服务器
之间有什么区别?根据我的理解,
子进程

PS:请不要推荐WebSocket或任何其他技术


谢谢。

当您将PHP-FPM与动态流程(这是默认值和推荐值)一起使用时,您可以选择:

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives:
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is greater than this
;                                    number then some children will be killed.
; Note: This value is mandatory.
在回答您的问题时,服务器和子进程都是进程,每个进程只响应一个用户。您的服务器最多支持400个并发连接

我已经用longpolling实现了很多系统,这比每隔一段时间刷新更有效,使用的资源更少

最大的问题是您的PHP进程将消耗所有服务器内存,我强烈建议您寻找任何替代方案

我使用的一个很好的替代方法是,您可以创建将信息推送到客户机的脚本。使用这种方法,您可以扩展到数千个并发客户机,这是直接用PHP无法做到的

例如,我制作了一个电子邮件客户端,它有一个用PHP编写的守护进程,使用这个NGiNX模块监视用户邮箱并推送新电子邮件的通知,而文件系统监视是使用,换句话说,我使用了几乎0个系统资源,创建了一个具有实时通知和非常低的网络和处理器使用率的webmail系统,仅使用PHP和longpolling或使用refresh计算成本很高


我知道你不想要Websockets的建议,但根据你的需求,它几乎无法避免。

所以基本上
服务器
儿童
是完全一样的吗?谢谢你的建议!您认为有没有可能通过优化的
php fpm
配置来避免直接使用
NGiNX
?我们的
NGiNX
配置文件是固定的,我们不会经常更改,这不是一项容易的任务。是的,您可以阅读“服务器”中的“子项”。请看这篇文章(),它将为您提供NGiNX和PHP-FPM优化的良好概述。