Answers:
如果您使用的是mod-php,则可能使用的是prefork
MPM,它会产生子进程来处理请求。这些子代的数量和生存期由主apache2.conf
(或httpd.conf
取决于发行版)文件中的指令控制。
查找看起来像这样的部分(您的值可能会有所不同):
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Apache StartServers
自动生成子代。这些进程将一直处于空闲状态,直到有请求进入为止。如果孩子们变得忙碌,它将催生MaxClients
孩子们来处理负载,并试图保持MinSpareServers
空闲的孩子们接管新的请求。一旦事情平静下来,空闲的孩子将被杀死,直到计数减少到MaxSpareServers
。
您要询问的部分由处理MaxRequestsPerChild
。设置为0表示孩子可以永远生存,这是大多数apache安装中的默认值。设置为任何其他值,则意味着每个子进程在处理了该数量的请求后,无论当前负载如何,都将被强制终止并重新启动。
有关prefork MPM的更多详细信息,请参见:http : //httpd.apache.org/docs/2.2/mod/prefork.html
httpd不会为mod_php派生一个进程。它为自己创建了一个进程,该进程中嵌入了mod_php。在满足MaxRequestsPerChild
要求之前,孩子将一直活着。mod_php本身将继续处理对PHP脚本的每个请求,直到脚本退出或超过时间限制为止。