cgi fastcgi php-fpm php-cgi에 대한 설명은 Baidu에서 볼 수 있습니다. 다음은 제가 이해한 것입니다.
용어:
<code>1、web服务器 2、通信协议 3、进程、主进程、子进程 4、php解析器 CGI:Common Gateway Interface 公共网关接口,web服务器和脚本语言通信的一个标准、 接口、协议【协议】 FastCGI:CGI协议的升级版【协议】 PHP-CGI: 实现了CGI接口协议的PHP脚本解析器【程序】 PHP-FPM: 管理和调度php-cgi进程,进而实现了FastCGI接口协议的程序【程序】 </code>
<code>webserver只能处理静态文件,对于php这样的动态脚本无能为力,只能交给php自己来处理, 于是有了下面这个流程: </code>
<code>但是上面架构有个性能问题,CGI对每个请求会parse一遍对应脚本的配置文件(如php.ini), 加载配置和扩展,初始化执行环境,性能非常差,所有有了下面的流程: </code>
그렇다면 PHP-FPM과 같은 Fastcgi 프로토콜을 구현하는 프로그램은 어떻게 수행합니까? 먼저 Fastcgi는 마스터 프로세스를 시작하고 구성 파일을 구문 분석하고 실행 환경을 초기화한 다음 여러 작업자 프로세스를 시작합니다. 요청이 들어오면 마스터는 이를 워커에게 전달하고 즉시 다음 요청을 수락할 수 있습니다. 이는 작업의 중복을 방지하고 자연스럽게 매우 효율적입니다. 그리고 작업자가 충분하지 않은 경우 마스터는 구성에 따라 여러 작업자를 미리 시작하여 대기할 수 있습니다(예: 20명의 작업자). 물론 유휴 작업자가 너무 많으면 일부가 중지되어 성능이 향상되고 리소스가 절약됩니다. . fastcgi의 프로세스 관리입니다.
php-fpm 구성 파일의 작업자 수에 대한 구성 항목은 다음과 같습니다.
<code>; The maximum number of processes FPM will fork. This has been design to control ; the global number of processes when using dynamic PM within a lot of pools. ; Use it with caution. ; Note: A value of 0 indicates no limit ; Default Value: 0 ; process.max = 128</code>
그러면 최대 작업자 프로세스 수는 128개입니다
FastCGI 더보기
<code> fastcgi是基于cgi架构的扩展,他的核心思想就是在web server和具体cgi程序之间建立一个智能的可持续的中间层,统管cgi程序的运行,这样web server只需要将请求提交给这个层,这个层再派生出几个可复用的cgi程序实例,然后再把请求分发给这些实例,这些实例是可控的,可持续,可复用的,因此一方面避免了进程反复fork,另一方面又可以通过中间层的控制和探测机制来监视这些实例的运行情况,根据不同的状况fork或者回收实例,达到灵活性和稳定性兼得的目的。</code>
참고문서
https://segmentfault.com/q/1010000000256516
http: //blog.csdn.net/zhuanshenweiliu/article/details/46413241
위 내용은 관련 내용을 포함하여 Nginx, CGI, FastCGI, PHP-CGI, PHP-FPM의 처리 흐름을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.