php_module_startup模块初始化
php_request_startup请求初始化
php_execute_script读取php代码进行语法解析-ast抽象语法树-opcode-执行得到对应结果
php_request_shutdown请求关闭
php_module_shutdown模块关闭
FPM(FastCGIProcessManager)模式FPM声明周期(常驻内存的进程,一个进程结束不直接shutdown,而是循环使用,当fpm退出时才进行php_module_shutdown)
php_module_startup
fcgi_accept_request
php_request_startup
fpm_request_executing
php_excute_script
fpm_request_end
php_request_shutdown
php_module_shutdown
cgi,fastcgi,php-fpm区别cgi
CGI的英文是(COMMONGATEWAYINTERFACE)公共网关接口,它的作用就是帮助服务器与语言通信,这里就是nginx和php进行通信,因为nginx和php的语言不通,因此需要一个沟通转换的过程,而CGI就是这个沟通的协议。
nginx服务器在接受到浏览器传递过来的数据后,如果请求的是静态的页面或者图片等无需动态处理的则会直接根据请求的url找到其位置然后返回给浏览器,这里无需php参与,但是如果是一个动态的页面请求,这个时候nginx就必须与php通信,这个时候就会需要用到cgi协议,将请求数据转换成php能理解的信息,然后php根据这些信息返回的信息也要通过cgi协议转换成nginx可以理解的信息,最后nginx接到这些信息再返回给浏览器。
fast-cgi
传统的cgi协议在每次连接请求时,会开启一个进程进行处理,处理完毕会关闭该进程,因此下次连接,又要再次开启一个进程进行处理,因此有多少个连接就有多少个cgi进程,这也就是为什么传统的cgi会显得缓慢的原因,因此过多的进程会消耗资源和内存。
而fast-cgi每次处理完请求后,不会kill掉这个进程,而是保留这个进程,使这个进程可以一次处理多个请求。这样每次就不用重新fork一个进程了,大大提高效率。
php-cgi
php-cgi是php提供给webserve也就是