php-fpm 就是fastCGI进程管理器
一、Web Server启动时载入FastCGI
进程管理器(IIS ISAPI或Apache Module)
二、FastCGI进程管理器自身初始化,启动多个CGI
解释器进程(可见多个
php-cgi)并等待来自Web Server的链接。
三、当客户端请求到达Web Server时,FastCGI进程管理器选择并链接到一个CGI解释器。Web server将CGI
环境变量和标准输入发送到FastCGI子进程php-cgi。
四、FastCGI子进程完成处理后将标准输出和错误信息从同一链接返回Web Server。当FastCGI子进程关闭链接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI
进程管理器(运行在Web Server中)的下一个链接。 在CGI模式中,
php-cgi在此便退出了。
在上述状况中,你能够想象CGI一般有多慢。每个Web请求PHP都必须从新解析php.ini、从新载入所有扩展并重初始化所有数据结构。使用FastCGI,全部这些都只在进程启动时发生一次。一个额外的好处是,持续数据库链接(Persistent database connection)能够工做。
重点:每个子进程CGI中, 每一个进程内部都嵌入了一个PHP解释器php
工做流:请求->nginx->php-fpm->fastcgi(worker)nginx
转载于知乎https://www.zhihu.com/question/40658804?sort=created数据库