FastCgi 와 PHP - fpm 관계
우선 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 가 정 한 형식 으로 처 리 된 결 과 를 되 돌려 주 고 프로 세 스 를 종료 합 니 다.웹 서버 에서 결 과 를 브 라 우 저 에 되 돌려 줍 니 다.자, CGI 는 프로 세 스 와 상 관 없 는 프로 토 콜 입 니 다.그럼 fastcgi 는 또 뭐 죠?Fastcgi 는 CGI 프로그램의 성능 을 향상 시 키 는 데 쓰 인 다.
성능 을 향상 시 키 려 면 CGI 프로그램의 성능 문 제 는 어디 에 있 습 니까?"PHP 해석 기 는 php. ini 파일 을 해석 하고 실행 환경 을 초기 화 합 니 다." 바로 여기 입 니 다.표준 CGI 는 모든 요청 에 이 절 차 를 실행 합 니 다.이것 은 분명히 불합리 하 잖 아!그럼 Fastcgi 는 어떻게 했 나 요?우선, Fastcgi 는 master 를 시작 하여 설정 파일 을 분석 하고 실행 환경 을 초기 화 한 다음 여러 worker 를 시작 합 니 다.요청 이 오 면 master 는 워 커 에 게 전달 하고 다음 요청 을 받 아들 일 수 있 습 니 다.이렇게 하면 중복 되 는 노동 을 피 할 수 있 고 효율 은 당연히 높다.그리고 워 커 가 부족 할 때 master 는 설정 에 따라 몇 개의 워 커 를 미리 시작 할 수 있 습 니 다.물론 한가 한 워 커 가 너무 많 을 때 도 멈 춰 서 성능 을 향상 시 키 고 자원 도 절약 할 수 있 습 니 다.이것 이 바로 fastcgi 의 프로 세 스 관리 입 니 다.
그럼 PHP - FPM 은 또 뭐 죠?Fastcgi 를 실현 한 프로그램 으로 PHP 에 의 해 공식 적 으로 받 아들 여 졌 습 니 다.
PHP 의 해석 기 는 pp - cgi 라 는 것 을 잘 알 고 있 습 니 다.php - cgi 는 CGI 프로그램 일 뿐 요청 만 해석 하고 결 과 를 되 돌려 줍 니 다. 프로 세 스 관리 가 되 지 않 습 니 다. (황상, 신 첩 은 정말 할 수 없습니다!) 그래서 php - cgi 프로 세 스 를 조정 할 수 있 는 프로그램 이 생 겼 습 니 다. 예 를 들 어 lighthttpd 에서 분 리 된 spawn - fcgi 입 니 다.자, PHP - FPM 도 이렇게 동쪽 입 니 다. 오 랜 시간 발전 한 후에 사람들의 인정 을 받 았 습 니 다.
자, 마지막 으로 네 문제 로 돌아 와.인터넷 에 서 는 fastcgi 가 하나의 프로 토 콜 이 고 pp - fpm 가 이 프로 토 콜 을 실현 했다 고 합 니 다.
네.
php - fpm 는 fastcgi 프로 세 스 의 관리자 로 fastcgi 프로 세 스 를 관리 합 니 다.
네.php - fpm 의 관리 대상 은 php - cgi 입 니 다.그러나 phop - fpm 는 fastcgi 프로 세 스 의 관리자 라 고 할 수 없습니다. 앞에서 fastcgi 는 프로 토 콜 이 라 고 말 했 기 때문에 이러한 프로 세 스 가 존재 하지 않 는 것 같 습 니 다. phop - fpm 가 존재 하 더 라 도 관리 할 수 없습니다 (적어도 현재).phop - fpm 는 phop 커 널 의 패 치 라 고 합 니 다.
예전 엔 맞 았 는데처음에는 phop - fpm 가 PHP 커 널 에 포함 되 어 있 지 않 았 기 때문에 이 기능 을 사용 하려 면 원본 버 전과 같은 phop - fpm 를 찾 아 커 널 패 치 를 한 다음 에 컴 파일 해 야 합 니 다.나중에 PHP 커 널 이 PHP - FPM 을 통합 한 후에 훨씬 편리 해 졌 습 니 다.
--enalbe-fpm
이 컴 파일 파 라 메 터 를 사용 하면 됩 니 다.php. ini 프로필 을 수정 한 후 부 드 럽 게 다시 시작 할 수 없어 php - fpm 가 탄생 했다 는 말 도 있다.
예, phop. ini 를 수정 한 후 phop - cgi 프로 세 스 는 부 드 럽 게 다시 시작 할 수 없습니다.pp - fpm 의 이 처리 체 제 는 새로운 워 커 가 새로운 설정 으로 이미 존재 하 는 워 커 가 손 에 있 는 일 을 처리 하면 쉴 수 있 습 니 다. 이런 체 제 를 통 해 지나치게 부 드 럽 습 니 다.
그리고 PHP - CGI 는 PHP 가 자체 적 으로 가지 고 있 는 FastCGI 관리자 라 고 합 니 다. 그렇다면 왜 또 pp - fpm 를 만 들 었 습 니까?
아니 야.php - cgi 는 PHP 스 크 립 트 를 설명 하 는 프로그램 일 뿐 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.