2010-05-02 4 views
11

mod_php와 cgi PHP 스크립트의 차이점은 무엇입니까?mod_php와 cgi PHP 스크립트의 차이점은 무엇입니까?

mod_php 대신 간단한 PHP 스크립트를 사용하여 CGI로 실행하는 것이 더 나은 이유는 무엇입니까?

감사

+1

CGI의 오버 헤드를 대부분 제거한 PHP를 FastCGI를 사용하여 실행할 수도 있으며 스레드 된 MPM을 실행할 수 있습니다 (PHP는 스레드 된 MPM을 선호하지 않습니다) – Reece45

+0

@ Reece45, MPM? ͏͏͏͏͏͏͏͏͏͏ – Pacerier

+0

@Pacerier Apache 고유 한 번에 여러 요청을 처리하는 여러 가지 방법을 구현하는 모듈 (다중 처리 모듈)입니다. 자세한 내용은 http://httpd.apache.org/docs/2.4/mpm.html을 참조하십시오. – Reece45

답변

10

CGI를 사용 : PHP 프로세스가 아파치에 의해 시작, 그것은 PHP 코드를 해석하는 PHP 과정이다 -하지 아파치 자체합니다.

이론적으로 각 요청에 대해 PHP 프로세스가 별도로 생성되어야하므로 일이 느려집니다. Apache는 요청에 응답하기 위해 더 많은 작업을해야합니다.
은 아파치 모듈 (mod_php, 또는 mod_php5), PHP 인터프리터로 PHP를 사용하는 경우


(댓글에 @ AlReece45 지적뿐만 아니라,이 FastCGI를을 사용하여 더 나은 만들 수 있습니다) 아파치 프로세스 내부에서 일종의 ""입니다 : 외부 PHP 프로세스가 없습니다.

의미 어떤 :

  • 없음


일반적으로, 나는 mod_php이 해결책이 말을 (빠르게) 아파치와 PHP 사이

  • 더 나은 통신 요청에 응답 분기 그게 가장 많이 사용되었습니다.

  • +3

    무대 오른쪽에 FastCGI를 입력하십시오. FastCGI는 CGI의 장점을 가지고 있으며 확장 성이 훨씬 뛰어납니다. :) mod_php는로드 된 서버에서 죽음이 될 수 있습니다. – Xorlev

    +0

    @Xorlev는로드 된 서버에 대해 nginx + phpfpm이라고 생각합니다.) –

    +1

    PHP는 인체에 ​​어떤 형태로든 죽음을 초래할 수 있습니다! ;-) –

    3

    일반 CGI는 요청시 각 요청마다 프로세스를 생성해야합니다.

    mod_php는 매끄러운 nginx 또는 lighttpd 대신에 부풀린 아파치를 사용해야합니다. 게다가, 파스칼에 의해 언급 된 "아파치와 PHP 사이의 더 나은 의사 소통"은 아파치에 해를 끼칠 수있다. (PHP로 개발 한 사람은 해를 입는다. ;-)).

    FastCGI를 사용하면 웹 서버에서 PHP를 분리 할 수 ​​있습니다 (다른 호스트에서 실행할 수도 있음).

    1

    또한, php.net 그냥 당신이 PHP를 실행하는 mod_cgi을 사용하고 있고 PHP 버전보다 오래된 PHP 5.3.12 또는 PHP 5.4.2 경우 소스 코드 공개가 가능하다 취약점을 오늘 발표했다. 업그레이드하거나 mod_rewrite 규칙을 적용하여

    http://www.php.net/archive/2012.php#id2012-05-03-1

    패치.

    관련 문제