2010-05-02 12 views
11

Jakie są różnice między skryptem mod_php i cgi php?Jakie są różnice między skryptem mod_php i cgi php?

Chodzi mi o to, dlaczego lepiej (jest to?) Używać mod_php zamiast prostych skryptów php, uruchamiając je jako CGI?

Dzięki

+1

Można również uruchomić PHP przy użyciu FastCGI, która eliminuje większość napowietrznych CGI, i pozwala na uruchomienie gwintowaną apache MPM (PHP zazwyczaj nie lubić gwintowane MPMS) – Reece45

+0

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

+0

@Pacerier Its Apache specyficznych module (Multi-Processing Module), który implementuje różne metody obsługi wielu żądań naraz. Więcej informacji można znaleźć na stronie http://httpd.apache.org/docs/2.4/mpm.html. – Reece45

Odpowiedz

10

Podczas używania CGI: proces PHP jest uruchamiany przez Apache i PHP jest to, że proces, który interpretuje kod PHP - nie Apache sama.

Teoretycznie należy utworzyć oddzielny proces PHP dla każdego żądania - co powoduje spowolnienie: Apache ma więcej pracy, aby odpowiedzieć na żądanie.
(dobrze, jak podkreślił @ AlReece45 w komentarzu, to mogą być wykonane lepiej używając FastCGI)


Kiedy PHP jako moduł Apache (mod_php lub mod_php5), interpreter PHP jest typu "osadzony" wewnątrz procesu Apache: nie ma zewnętrznego procesu PHP.

Co oznacza:

  • Nie rozwidlone odpowiedzieć na żądanie (szybciej)
  • lepszej komunikacji między Apache i PHP


Ogólnie rzecz biorąc, chciałbym powiedzieć, że mod_php jest rozwiązaniem to jest najczęściej używane.

+3

Wprowadź etap w prawo, FastCGI. FastCGI ma zalety CGI i znacznie lepiej skaluje. :) mod_php może być śmiercią na załadowanym serwerze. – Xorlev

+0

@Xorlev dla załadowanego serwera, myśl o nginx + phpfpm;) –

+1

php w jakiejkolwiek formie może spowodować śmierć ludzkości! ;-) –

3

Zwykły CGI wymaga, aby proces był tworzony dla każdego żądania w momencie żądania.

mod_php wymaga użycia nadętego apache zamiast slick nginx lub lighttpd. Poza tym "lepsza komunikacja między Apache i PHP" wspomniana przez Pascala może zaszkodzić apache (szkodzi każdemu, kto rozwija się w php ;-)).

FastCGI pozwala oddzielić php od serwera WWW (ewentualnie uruchomić go na innym hoście).

1

Również php.net właśnie wydała lukę dziś, jeśli ujawnienie kodu źródłowego jest możliwe, jeśli używasz mod_cgi uruchomić PHP i twoja wersja PHP jest starszy niż PHP 5.3.12 lub PHP 5.4.2.

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

patch poprzez modernizację lub nakładanie mod_rewrite regułę.

Powiązane problemy