이 기사에서는 PHP의 fastcgi 및 php-fpm에 대해 간략하게 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
PHP 개발에 있어서는 fastcgi와 php-fpm이 반드시 언급될 것입니다. 이 두 가지는 PHP 성능에 중요한 역할을 합니다. 제가 바이두에서 인턴 생활을 하면서 사용한 ODP 환경은 php-fpm이었지만, 전혀 아는 바가 없었고, PHP에 대한 전체적인 개념도 막연한 상태였습니다. 예정보다 빨리 작업이 이틀만에 완료되었습니다. 이번 기회에 PHP에 대해 좀 더 자세히 알아봤습니다.
웹 서버
PHP는 웹 개발을 위해 특별히 설계된 서버 측 언어입니다. 일반적인 PHP 아키텍처에는 LAMP 및 LNMP가 포함됩니다.
mod_php mode
요청이 Apache로 전송되고, Apache가 PHP를 구문 분석하고 처리하여 그 결과를 클라이언트에 반환하는 것을 볼 수 있습니다. LAMP 아키텍처를 사용할 때 Apache 구성 파일 httpd.conf
加入如下两句 LoadModule phpx_module PHP_ROOT/phpxapache2_2.dllAddType appliaction/x-httpd-php.php 将下面语句做如下修改<IfModule dir_module> DirectoryIndex index.html</IfModule>改为 <IfModule dir_module> DirectoryIndex index.html index.htm index.php index.phtml</IfModule>
을 수정하고 LoadModule을 사용하여 phpx_module을 로드해야 합니다(x는 PHP 버전 번호). PHP는 Apache의 하위 모듈로 실행되는 것으로 이해될 수 있습니다. PHP에 액세스하도록 요청하면 Apache는 PHP 코드를 구문 분석하기 위해 phpx_module을 호출합니다.
php_module은 PHP 코드를 어떻게 구문 분석하나요? - 사피를 통해.
Apache, PHP, sapi의 관계는 아래와 같습니다.
sapi는 PHP가 데이터를 위해 다른 애플리케이션과 상호 작용할 수 있도록 소켓과 유사하게 외부 통신을 위한 인터페이스를 제공하는 중간 계층입니다. PHP는 Apache 및 Nginx용 php_module, IIS용 ISAPI 등 다양한 sapi를 제공합니다.
PHP를 호출하는 Apache의 실행 프로세스:
Apache -> httpd -> php_module -> sapi -> PHP
간단히 말하면 웹 서버가 php_module을 통해 PHP를 구문 분석하고 실행하는 모드입니다. .
mod_fastcgi 모드
PHP sapi의 또 다른 방법은 cgi 모드를 제공하는 것입니다. 이제 cgi는 fastcgi로 대체되었습니다.
소위 cgi는 공통 게이트웨이 인터페이스입니다. 웹 서버가 요청을 받으면 이를 cgi 프로그램(예: PHP의 fastcgi)에 넘겨주고(PHP 구문 분석) 결과를 웹 서버에 전달하면 웹 서버는 요청을 클라이언트에 반환합니다.
cgi의 단점은 각 요청에 시작 및 종료 프로세스가 있다는 점입니다. 이는 많은 동시 요청의 경우 완료되는 많은 비판을 받는 분기 및 실행 모드입니다.
fastcgi의 탄생은 이러한 단점을 보완합니다. 요청 대기를 일찍 시작하고 요청에 응답한 후 종료하지 않고 계속해서 다음 요청을 기다리는 것이 원칙입니다.
fastcgi를 활용하는 실행 모드를 mod_fastcgi라고 합니다.
mod_php와 mod_fastcgi의 차이점을 비교해보세요. 전자는 PHP를 웹 서버의 모듈로 실행하며 PHP는 서버와 고도로 통합되어 있습니다. 후자는 fastcgi를 중간 프로세스로 사용하고, PHP와 웹 서버는 요청과 응답을 완료하는 데에만 fastcgi를 사용합니다.
mod_php 모드
mod_php 모드에서는 Apache가 요청을 수락할 때마다 PHP에 연결하여 sapi를 통해 요청을 완료하는 프로세스를 생성합니다. 견딜 수 있습니다.
mod-fastcgi mode
이 그림에서 볼 수 있듯이, 요청이 도착할 때마다 httpd는 sapi를 호출하여 요청을 PHP에 전달하고 완료 후에도 종료하지 않고 다음 요청을 기다립니다. 동시성 성능이 크게 향상되었습니다.
php-fpm
칼을 갈고 나무를 자르세요. 이전 설명은 단지 php-fpm을 소개하기 위한 것입니다. php-fpm은 무엇을 합니까? 실제로 fastcgi를 지원하는 데 사용됩니다.
fastcgi는 플랫폼 독립적이고 언어 독립적인 인터페이스 구현입니다. 웹 서버와의 통신을 완료하려면 규정된 방법에 따라 다른 언어로 구현하기만 하면 됩니다. 위 그림에 표시된 php-cgi는 PHP와 함께 제공되는 fastcgi 관리자입니다.
인터넷에서 볼 수 있는 php-cgi에는 두 가지 주요 문제가 있습니다.
php-cgi가 php.ini를 변경한 후 새 php.ini를 적용하려면 php-cgi를 다시 시작해야 하며 다시 시작할 수 없습니다. 원활하게.
php-cgi를 직접 종료하면 PHP가 실행되지 않습니다.
php-fpm은 위의 단점을 완벽하게 해결한 fastcgi 전용 관리자입니다.
간단히 말하면 php-fpm의 역할은 PHP에서 fastcgi를 구체적으로 관리하여 PHP가 웹 서버와 안전하고 안정적으로 협력하여 높은 동시성 조건에서 요청 응답 프로세스를 완료할 수 있도록 하는 것입니다.
추천 학습: php 비디오 튜토리얼
위 내용은 PHP의 fastcgi 및 php-fpm에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!