PHP: Jakie są zalety FastCGI w porównaniu z mod_php?

30

Niedawno zasugerowano mi, że używam FastCGI z PHP. Teraz poszedłem na stronę FastCGI i przeczytałem ją, ale tak naprawdę nie rozumiem, jakie są zalety.

Cletus
źródło

Odpowiedzi:

37

Za pomocą mod_php każdy proces roboczy Apache ma załadowany cały interpreter PHP. Ponieważ Apache potrzebuje jednego procesu roboczego na każde przychodzące żądanie, możesz szybko skończyć z setkami pracowników Apache w użyciu, z których każdy ma załadowany własny interpreter PHP, zużywając ogromne ilości pamięci.

(Uwaga: nie jest to do końca prawdą, Apache worker_mpmpozwala obsługiwać wiele żądań za pomocą jednego wątkowego pracownika Apache. Jednak nawet w 2009 r. Nie jest to zalecany sposób wdrażania PHP z powodu podejrzeń problemów z wątkami z rozszerzeniami PHP).

Korzystanie z PHP w trybie fast_cgi (używanie czegoś takiego jak spawn-fcgi z pakietu lighttpd) ma następujące zalety

  • dostosuj liczbę pracowników PHP oddzielnie od liczby połączeń przychodzących
  • pozwalają umieścić pracowników PHP na innym serwerze lub skalować na wielu serwerach bez zmiany warstwy internetowej
  • daje elastyczność wyboru innego serwera WWW, takiego jak nginx lub lighttpd
  • pozwalają na uruchamianie aplikacji PHP w innej domenie bezpieczeństwa na twoim serwerze internetowym
Dave Cheney
źródło
5

FastCGI oznacza, że ​​bity php nie działają w tym samym procesie co bity apache, w przeciwieństwie do mod_php. Ta separacja może mieć pewne określone zalety, jeśli chodzi o ponowne uruchomienie serwera lub radzenie sobie z niekontrolowanymi aplikacjami - w przypadku mod_php oznacza to, że to proces apache jest „niekontrolowany”, ale w fastcgi to tylko proces, z którym rozmawia apache, więc cały serwer nie musi być zdjęty.

pjz
źródło
4

Kolejną zaletą, o której jeszcze nie wspomniano, jest fakt, że dzięki mod_fcgid(która jest nowszą implementacją do używania FastCGI na Apache) i suexec możesz realizować konfiguracje, w których różne vhosty używają różnych użytkowników Linuksa do wykonania, co może być prawdziwą korzyścią bezpieczeństwa we współdzielonym hostingu szenario .

Dzięki mod_php wszystkie vhosty mają tego samego użytkownika, którym jest użytkownik Apache. Może to prowadzić do problemów z bezpieczeństwem.

Martin C.
źródło
Zależy to od MPM używanego w tej konkretnej konfiguracji httpd Apache. Na przykład w MPM-itk ( mpm-itk.sesse.net ) można użyć mod_php i uruchomić skrypty (lub lepiej: procesy httpd) w kontekście innego użytkownika.
joschi