CGI, FastCGI, php - cgi, php - fpm 는 무엇 입 니까?

3054 단어
CGI 가 뭐야?
CGI 는 모두 '공공 게 이 트 웨 이 인터페이스' (Common Gateway Interface) 라 고 부 르 며, HTTP 서버 는 네트워크 서버 에서 프로그램 을 실행 해 야 합 니 다.
CGI 뭐 하 는 거 야?
CGI 는 웹 서버 가 전달 하 는 데이터 가 표준 형식 이 고 CGI 프로그램의 작성 자 를 편리 하 게 하기 위해 서 입 니 다.(그 데 이 터 를 전달 하고 어떤 형식 으로 후방 에 전달 해 야 하 는 지 를 규정 하 는 협의)
웹 서버 (예 를 들 어 nginx) 는 내용 의 배포 자 일 뿐이다.예 를 들 어 요청 /index.html 하면 웹 서버 는 파일 시스템 에서 이 파일 을 찾 아 브 라 우 저 에 보 냅 니 다. 여기 서 정적 데 이 터 를 나 누 어 줍 니 다.자, 지금 요청 한 것 이 /index.php 이 라면 설정 파일 에 따 르 면 nginx 는 이것 이 정적 파일 이 아니 라 는 것 을 알 고 PHP 해상도 기 를 찾 아가 처리 해 야 합 니 다. 그러면 이 요청 을 간단하게 처리 한 후 PHP 해상도 기 에 맡 길 것 입 니 다.Nginx 는 어떤 데 이 터 를 PHP 해상도 기 에 전달 합 니까?url 이 있어 야 죠. 검색 문자열 도 있어 야 죠. POST 데이터 도 있어 야 합 니 다. HTTP header 가 없어 서 는 안 됩 니 다. 좋 습 니 다. CGI 는 어떤 데 이 터 를 전달 하고 어떤 형식 으로 후방 에 전달 해 야 하 는 지 를 규정 하 는 프로 토 콜 입 니 다.PHP 코드 에서 사용 하 는 사용자 가 어디서 왔 는 지 잘 생각해 보 세 요.웹 서버 받 음/index.php 이 요청 을 받 으 면 해당 하 는 CGI 프로그램 이 시 작 됩 니 다. 여기 가 바로 PHP 의 해석 기 입 니 다.다음 PHP 해상도 기 는 php. ini 파일 을 분석 하고 실행 환경 을 초기 화한 다음 요청 을 처리 한 다음 CGI 가 정 한 형식 으로 처 리 된 결 과 를 되 돌려 주 고 프로 세 스 를 종료 합 니 다.웹 서버 에서 결 과 를 브 라 우 저 에 되 돌려 줍 니 다.
FastCGI 가 뭐 예요?
Fastcgi 는 CGI 의 업그레이드 버 전 으로 언어 와 무관 한 프로 토 콜 로 의사 소통 프로그램 (예 를 들 어 PHP, Python, Java) 과 웹 서버 (Apache 2, Nginx) 를 사용 합 니 다. 이론 적 으로 모든 언어 로 작 성 된 프로그램 은 Fastcgi 를 통 해 웹 서 비 스 를 제공 할 수 있 습 니 다.Fastcgi 는 CGI 프로그램의 성능 을 향상 시 키 는 데 쓰 인 다.
성능 을 향상 시 키 려 면 CGI 프로그램의 성능 문 제 는 어디 에 있 습 니까?"PHP 해석 기 는 php. ini 파일 을 해석 하고 실행 환경 을 초기 화 합 니 다." 바로 여기 입 니 다.표준 CGI 는 모든 요청 에 이 절 차 를 실행 합 니 다.이것 은 분명히 불합리 하 잖 아!그럼 Fastcgi 는 어떻게 했 나 요?우선, Fastcgi 는 master 를 시작 하여 설정 파일 을 분석 하고 실행 환경 을 초기 화 한 다음 여러 worker 를 시작 합 니 다.요청 이 오 면 master 는 워 커 에 게 전달 하고 다음 요청 을 받 아들 일 수 있 습 니 다.이렇게 하면 중복 되 는 노동 을 피 할 수 있 고 효율 은 당연히 높다.그리고 워 커 가 부족 할 때 master 는 설정 에 따라 몇 개의 워 커 를 미리 시작 할 수 있 습 니 다.물론 한가 한 워 커 가 너무 많 을 때 도 멈 춰 서 성능 을 향상 시 키 고 자원 도 절약 할 수 있 습 니 다.이것 이 바로 fastcgi 의 프로 세 스 관리 입 니 다.
Fastcgi 의 특징 은 한 프로 세 스에 서 여러 요청 을 순서대로 완성 하여 효율 을 높이 는 목적 을 달성 하 는 것 입 니 다. 대부분의 Fastcgi 는 프로 세 스 풀 을 유지 합 니 다.
다 중 프로 세 스 이기 때문에 CGI 다 중 스 레 드 보다 서버 메모 리 를 더 많이 소모 합 니 다. PHP - CGI 해석 기 는 프로 세 스 마다 7 ~ 25 메 가 메모 리 를 소모 합 니 다. 이 숫자 를 50 또는 100 으로 곱 하면 큰 메모리 입 니 다.
PHP - CGI 는 PHP 자체 의 FastCGI 관리자 (php - cgi 가 php. ini 설정 을 변경 한 후 php - cgi 를 다시 시작 해 야 새로운 php - ini 가 적 용 됩 니 다. 부 드 럽 게 다시 시작 할 수 없습니다.  그래서 php - fpm 가 탄생 했 습 니 다)
PHP - FPM 은 PHP FastCGI 관리자 입 니 다. PHP 에 만 사 용 됩 니 다.http://php-fpm.org/download다운로드
PHP 의 해석 기 는 pp - cgi 라 는 것 을 잘 알 고 있 습 니 다.php - cgi 는 CGI 프로그램 일 뿐 요청 만 해석 하고 결 과 를 되 돌려 줍 니 다. 프로 세 스 관리 가 되 지 않 습 니 다. (황상, 신 첩 은 정말 할 수 없습니다!) 그래서 php - cgi 프로 세 스 를 조정 할 수 있 는 프로그램 이 생 겼 습 니 다. 예 를 들 어 lighthttpd 에서 분 리 된 spawn - fcgi 입 니 다.자, PHP - FPM 도 이렇게 동쪽 입 니 다. 오 랜 시간 발전 한 후에 사람들의 인정 을 받 았 습 니 다.
한편, PHP - fpm 는 PHP 의 'Fastcgi' 에 대한 실현 입 니 다. 그 는 웹 서버 에서 온 요청 을 처리 하기 위해 프로 세 스 풀 을 관리 합 니 다.현재 PHP - fpm 는 PHP 에 내장 되 어 있 습 니 다.
그러나 PHP - fpm 는 'PHP Fastcgi 프로 세 스 관리자' 일 뿐 PHP 해석 기 자 체 를 호출 하여 요청 을 처리 합 니 다. PHP 해석 기 (Windows 에서) 는 pp - cgi. exe 입 니 다.

좋은 웹페이지 즐겨찾기