nginx 和php-fpm关系

时间:2022-10-20 15:11:01
php-fpm 就是fastCGI进程管理器
1、Web Server启动时载入FastCGI 进程管理器(IIS ISAPI或Apache Module)
2、FastCGI进程管理器自身初始化,启动多个CGI 解释器进程(可见多个 php-cgi)并等待来自Web Server的连接。
3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI 环境变量和标准输入发送到FastCGI子进程php-cgi。
4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI 进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中, php-cgi在此便退出了。
在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。

重点:每一个子进程CGI中, 每个进程内部都嵌入了一个PHP解释器

工作流:请求->nginx->php-fpm->fastcgi(worker)

转载于知乎https://www.zhihu.com/question/40658804?sort=created