php.ini配置修改后没效果+fpm相关概念

1 遇到的问题:在php.ini文件中修改了参数,但phpinfo()打印出的内容和配置中修改内容不一致。

解决的方法:在www.conf配置文件中修改相关配置。

 

php.ini、php-fpm.conf和www.conf

(1)php.ini是php运行的核心配置文件;

(2)php-fpm.conf是进程服务的配置文件;

(3)www.conf是php-fpm进程服务的扩展配置文件;

(4)三者的关系:

fpm启动后会先读取php.ini,然后再读取php-fpm.conf相关配置,其中php-fpm.conf中主要执行include=/etc/php-fpm.d/*.conf,

/etc/php-fpm.d文件夹下存在www.conf文件,会覆盖之前的php.ini的配置。相当于master进程先读取php.ini完成php解析器的工作,后续worker进程根据www.conf配置进行启动,从而改变了部分配置情况。

启动fpm后,会创建一个master进程,监听9000端口,master进程会根据php-fpm.conf(其实主要是www.conf)去创建若干子进程,子进程去执行实际的业务。

 

2 CGI、fastcgi、php-cgi、php-fpm的概念:

CGI:是个协议,浏览器向web服务器请求php文件时,无法解析非静态文件,需要php解析器处理,CGI规定了web服务器需要传递些什么内容给php解析器进行处理。

 fastcgi:用来提高CGI协议程序的性能的协议。标准的CGI程序执行步骤是:php解析器读取php.ini配置文件,初始化运行环境,再执行功能程序。而fastcgi会启动一个master进程解析配置文件,初始化好环境后开启多个worker进程,当请求过来时,master进程将请求分配给worker进程处理,当Worker进程不够用时,master会根据配置启动多个worker进程;当空闲进程太多时,会kill部分Worker进程。

 php-cgi:是php的解释器,只是个CGI程序,本身只能解析请求,返回结果,不管理进程。

 php-fpm:是能够调度php-cgi进程的程序,是实现了fastcgi协议的程序。

 

你可能感兴趣的:(关于后台)