【发布时间】:2016-12-06 12:45:36
【问题描述】:
我有一个使用getmypid() 打印出PID 的单行PHP 脚本,每次通过FPM 调用脚本时,PID 都会发生变化,但我希望pid 是相同的。我认为 FPM 的全部意义在于不会每次都产生一个新进程,从而使事情变得更快?
【问题讨论】:
-
每次都是全新的吗?还是它是 set PID 中的一个?一个集合,可能包含 n 个不同的 PID,其中 n 是您的机器拥有的 CPU 线程数?
我有一个使用getmypid() 打印出PID 的单行PHP 脚本,每次通过FPM 调用脚本时,PID 都会发生变化,但我希望pid 是相同的。我认为 FPM 的全部意义在于不会每次都产生一个新进程,从而使事情变得更快?
【问题讨论】:
这个,你可能需要在你的 www.conf 文件(或者取决于你的操作系统的任何 conf 文件)中稍微了解一下 php fpm 配置。因此,根据您的配置,FPM 通常会根据您的需求分叉更多的子代,因此 pid 号也不同。
选择进程管理器如何控制子进程的数量 进程。
可能的值:
静态 - 子进程的固定数量 (pm.max_children)动态 - 子进程的数量根据以下指令动态设置。有了这种流程管理,总会有至少 1 个孩子。
pm.max_children - 可以同时存活的最大子节点数。
pm.start_servers - 启动时创建的子节点数。pm.min_spare_servers - 处于“空闲”状态(等待处理)的最小子节点数。如果“空闲”进程的数量小于这个数字,那么一些 将创建子级。
pm.max_spare_servers - 处于“空闲”状态(等待处理)的最大子级数。如果“空闲”进程的数量大于此数量,则将杀死一些子进程。ondemand - 启动时不创建子级。当新请求连接时,子节点将被分叉。
使用以下参数:
pm.max_children - 可以同时存活的孩子的最大数量。
pm.process_idle_timeout - 空闲进程将被杀死的秒数。注意:此值是强制性的。
【讨论】: