用另一个文件覆盖php-fpm池configuration值

不得不自定义一个新的服务器的php-fpm池configuration,我想知道是否有可能/允许/build议有一个新的池文件,这个文件名是在原始文件后面按字母顺序排列的,只有重写初始configuration的值。

原始configuration位于/etc/php/7.0/fpm/pool.d名称为www.conf

看来,根据与安装相关的页面,工程师直接修改原件(保存初始值的副本)。 例如

 [www] ... user www-data group www-data pm.max_children 2 

在修改后给出

 [www] ... user myapp ; was www-data group myapp ; was www-data pm.max_children 8 ; was 2 

但似乎可能是下一次升级php-fpm后重复的任务(此外,configuration是在7.0path,这是令人担忧的)。

而不是修改原始文件,我想保持不变,并添加另一个,说wwwmyapp.conf将声明相同的池,只有值已经改变

wwwmyapp.conf

 [www] ; same pool! user myapp group myapp pm.max_children 8 

pool.d中,文件列表

 www.conf wwwmyapp.conf 

因为在php-fpm.conf中加载了所有池conf文件, wwwmyapp的值将会在www (在同一个www池中)之后被读取,并且应该覆盖第一个值。

  • 它似乎在一些testing工作,没有错误报告,但它会一直工作,并为所有的价值?
  • 我们应该直接覆盖configuration文件吗?

在任何文档中找不到答案,即使在php.net上。

找不到来自其他来源的“官方”确认,但在做一些研究之后,这是一些结果:

分析php7.0-fpm的源代码,更具体地说是fpm-conf.c ,看起来如此

  • 首先读取主configuration文件php-fpm.conf [ fpm_conf_load_ini_file ()],
  • 所有include指令都是按顺序读取的,由于glob ()给出了一个文件列表,
  • 每个文件都被相同的fpm_conf_load_ini_file ()分析,
  • 文件中的一个条目覆盖任何以前设置的值,
  • 任何新的include将有一个recursion调用包含处理函数,和
  • glob ()函数GLOB_NOSORT名称进行sorting,默认情况下(没有GLOB_NOSORT选项)

因此,我们可以假定 – 至less在这个版本中,考虑到现在的代码,这不太可能改变 – 按字母顺序安排pool.d目录configuration文件是安全的; 任何先前logging的值将被同名的条目覆盖。

我们有一个干净的方式来处理php-fpmconfiguration文件,保持configuration文件不变,并添加名称按字母顺序排列的大于打包文件名的自定义文件,其中包含必须更改的几个选项。