1. PHP의 작동 원리
일반적인 질문: Nginx + PHP - FPM
CGI의 작동 원리: 일부 초기 웹 서버는 간단한 HTML 정적 파일만 처리할 수 있지만 기술, 동적 언어의 발전으로 (예: PHP, Python)이 나타났습니다. 여기서 PHP를 처리하려면 PHP 파서를 넘겨 처리해야 하는데, PHP가 처리된 후 웹 서버와 어떻게 통신해야 할까요? 이것은 문제입니다. 서로 다른 언어 프로세서와 웹 서버 간의 통신 문제를 해결하기 위해 CGI 프로토콜이 등장했습니다. 프로그램이 CGI 프로토콜에 따라 작성되면 언어 파서와 웹 서버 간의 통신이 실현될 수 있습니다. (예: PHP의 CGI 프로그램) 이 과정에서 CGI는 PHP 파서와 웹 서버 사이의 프로토콜 브리지입니다.
FastCGI: CGI는 PHP와 웹 서버 간의 통신 문제를 해결하지만 웹 서버가 요청을 받을 때마다 새로운 CGI 프로세스를 열고 요청이 끝나면 프로세스를 종료하기 때문에 효율성이 매우 낮습니다. 이번에는 그러한 요청이 10,000개, 100,000개 또는 100만 개 있으면 100,000개 또는 100만 개의 새로운 프로세스를 열고 종료하는 것 자체가 리소스 낭비입니다. 이때 FastCGI는 주로 CGI의 개선된 버전으로 등장했습니다. 각 요청이 처리된 후에는 프로세스가 종료되지 않고 프로세스가 한 번에 여러 요청을 처리할 수 있도록 유지됩니다. 이 경우 매번 프로세스를 다시 열 필요가 없으므로 효율성이 크게 향상됩니다.
PHP-FPM: (FastCGI 프로세스 관리자: FastCGI 프로세스 관리자) FPM은 FastCGI를 구현한 것이며 프로세스 관리 기능을 제공합니다. 프로세스에는 마스터 프로세스와 작업자 프로세스라는 두 가지 프로세스가 포함됩니다. 마스터 프로세스는 포트 수신 및 웹 서버의 요청 수신을 담당하며 일반적으로 여러 작업자 프로세스가 정의됩니다. 각 프로세스 PHP 파서는 각 프로세스(PHP 코드가 실제로 실행되는 곳)에 내장되어 있습니다. 즉, 작업자는 PHP 코드를 처리하는 반면 마스터는 주로 포트에서 수신하고 요청을 받습니다. 웹 서버. 자체적으로 마스터 수신 포트는 기본적으로 9000이고 9000 포트는 Nginx의 역방향 프록시를 통해 프록시되므로 여기에서 FPM 관련 처리를 완료할 수 있습니다.
2. CGI, FastCGI 및 PHP-FPM의 차이점을 간략하게 설명하세요.
CGI: 웹 서버와 PHP 파서의 프로토콜에 연결하기 위해 브리지 역할을 합니다.
FastCGI: CGI의 향상된 버전입니다.
PHP-FPM: FastCGI 프로세스 관리자, FastCGI 프로세스 관리자.
위 내용은 PHP 작동 방식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!