>  기사  >  백엔드 개발  >  PHP에서 cgi와 fcgi의 차이점은 무엇입니까

PHP에서 cgi와 fcgi의 차이점은 무엇입니까

WBOY
WBOY원래의
2022-07-27 16:41:252533검색

PHP에서 cgi와 fcgi의 차이점: cgi는 공통 게이트웨이 인터페이스를 의미하는 "common Gateway 인터페이스"의 약어이고, fcgi는 빠른 공통 게이트웨이를 의미하는 "빠른 공통 게이트웨이 인터페이스"의 약어입니다. 인터페이스. "php-cgi"는 CGI 프로토콜의 구현이고 "PHP-FPM"은 FCGI 프로토콜의 구현입니다.

PHP에서 cgi와 fcgi의 차이점은 무엇입니까

이 기사의 운영 환경: Windows 10 시스템, PHP 버전 8.1, Dell G3 컴퓨터

PHP에서 cgi와 fcgi의 차이점은 무엇입니까?

CGI: 공통 게이트웨이 인터페이스 공통 게이트웨이 인터페이스

FCGI : 빠른 공통 게이트웨이 인터페이스 빠른 공통 게이트웨이 인터페이스

php-cgi는 CGI 프로토콜의 구현이고 PHP-FPM은 FCGI 프로토콜의 구현입니다.

CGI는 nginx와 같은 웹 서버와 PHP와 같은 백엔드 동적 스크립팅 언어 간의 통신을 위한 프로토콜 인터페이스입니다.

지식 확장

1. 시나리오:

브라우저는 nginx와 같은 웹 서버를 요청합니다. 요청이 정적 index.html인 경우 nginx가 이를 직접 반환할 수 있습니다. 그러나 요청이 idex.php인 경우 nginx는 구성에 따라 정적 리소스가 아니라는 것을 확인하고 백엔드 서비스를 요청해야 합니다. 그렇다면 nginx가 백엔드 서비스를 요청할 때 어떤 형식과 어떤 데이터를 백엔드 서비스로 보내야 할까요? CGI는 형식과 데이터를 정의하는 프로토콜입니다.

2. CGI 프로토콜의 단점:

CGI 프로토콜은 백엔드 서비스를 요청할 때마다 CGI 프로토콜을 구현하는 프로그램을 시작해야 합니다. 여기에는 PHP 파서가 있습니다. PHP 파서는 PHP.ini 파일을 구문 분석하고, 초기화 작업을 수행하고, 요청을 처리하고, 결과를 반환합니다. 각 요청을 다시 초기화해야 하는데 이는 너무 중복되는 작업입니다. 그래서 FCGI가 탄생했습니다.

PHP는 해석 언어이기 때문에 PHP 코드를 해석하려면 해석기가 필요합니다.

3. FCGI의 장점:

FCGI 프로토콜은 먼저 PHP.ini 파일을 구문 분석하고 초기화 작업을 수행하는 데 사용되는 마스터를 시작합니다. 여러 작업자를 시작하면 작업자는 특정 요청을 처리하는 데 사용됩니다. 이는 초기화와 특정 요청 처리를 분리합니다. 여기에도 마스터와 워커를 관리하는 프로그램이 필요하므로 PHP-FPM이 등장했습니다.

FCGI는 C/S 아키텍처를 채택합니다. 웹 서버를 스크립트 파싱 서버와 분리하세요. 웹 서버가 정적 리소스만 처리하도록 하고 백엔드 스크립트 구문 분석 서버에서 반환된 데이터를 브라우저에 반환합니다.

웹 서버 nginx는 PHP 프로그램 등 외부 프로그램의 직접 호출이나 파싱을 지원하지 않으므로 CGI 인터페이스를 통해 호출해야 합니다. 이는 실제로 PHP-FPM인 래퍼를 형성하기 위해 CGI 캡슐화를 필요로 합니다. nginx는 PHP-FPM을 호출하고, PHP-FPM은 백엔드 PHP 코드를 호출한 다음, PHP-FPM이 결과를 nginx에 반환합니다.

이제 PHP-FPM이 PHP 코어에 통합되었습니다.

PHP-FPM과 nginx는 정적 리소스를 처리하고 동적 요청을 전달해야 하는 프런트 엔드 nginx의 부담을 줄이기 위해 종종 다른 서버에 배포됩니다.

그리고 FCGI도 CGI보다 안전합니다.

4. CGI 프로토콜 PHP-CGI 구현

php.ini 파일이 수정되면 PHP-CGI가 원활하게 전환되지 않습니다. 즉, 이러한 새 구성을 사용하려면 PHP-CGI 프로그램을 다시 시작해야 합니다.

5. FCGI 프로토콜 PHP-FPM

구현 php.ini 파일을 수정하면 PHP-FPM이 원활하게 전환됩니다. 수정 전 워커의 경우 요청 처리 후 파기되며, 새로 생성된 워커는 새로운 구성을 사용할 수 있습니다. 이는 또한 원활한 전환을 달성합니다.

또한 PHP-CGI 프로세스가 중단되면 PHP를 실행할 수 없습니다. PHP-FPM에는 이 문제가 없으며 데몬은 하위 프로세스를 원활하게 다시 시작합니다.

PHP-FPM이 등장하기 전에는 실제로 lighthttpd에서 개발된spawn-fcgi가 있었습니다. PHP-FPM은 초기화 중에 여러 작업자를 생성할 수 있으며 작업자가 유휴 상태인 경우 작업자를 재활용할 수 있습니다.

spawn-fcgi는 메모리 누수를 일으키거나 동시성이 높을 때 FCGI를 자동으로 다시 시작할 수도 있습니다.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP에서 cgi와 fcgi의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.