Middle
Czym jest PHP-FPM?
sobes.tech AI
Odpowiedź od AI
PHP-FPM (FastCGI Process Manager) to menedżer procesów FastCGI dla PHP, alternatywa dla standardowego PHP FastCGI. Zapewnia lepszą wydajność podczas obsługi żądań sieciowych w środowiskach o dużym obciążeniu. FPM zarządza pulą procesów PHP oczekujących na przychodzące żądania od serwera WWW (np. Nginx lub Apache przez moduł mod_proxy_fcgi).
Kluczowe cechy i zalety FPM:
- Pula procesów: FPM tworzy i zarządza zestawem procesów PHP. Procesy te mogą być statyczne (stała liczba), dynamiczne (tworzone w razie potrzeby w określonych granicach) lub na żądanie (tworzone po otrzymaniu żądania i usuwane po przetworzeniu). Pozwala to na efektywne wykorzystanie zasobów systemowych.
- Lepsza skalowalność: Dzięki zarządzaniu pulą procesów, FPM może obsługiwać wiele jednoczesnych żądań, co jest krytyczne dla aplikacji o dużym obciążeniu.
- Oddzielenie procesów: Każde żądanie jest obsługiwane przez osobny proces FPM, co zwiększa stabilność. Awaria jednego żądania nie wpłynie na inne.
- Konfiguracja: Umożliwia elastyczne dostosowanie zachowania procesów, np. maksymalną liczbę żądań na proces, czas życia procesu, zarządzanie pamięcią.
- Integracja z serwerami WWW: Łatwo integruje się z popularnymi serwerami WWW przez protokół FastCGI.
Przykład konfiguracji puli procesów w php-fpm.d/www.conf:
; Nazwa puli
[www]
; Użytkownik i grupa, pod którymi będą uruchamiane procesy
user = www-data
group = www-data
; Nasłuchiwanie na TCP-socket:
; listen = 127.0.0.1:9000
; ...lub na Unix-socket:
listen = /run/php/php7.4-fpm.sock
; Metoda zarządzania procesami:
; static - stała liczba procesów (`pm.max_children`)
; dynamic - dynamiczna liczba procesów (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - tworzone na żądanie (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Liczba początkowa procesów potomnych przy starcie w trybie dynamicznym
pm.start_servers = 5
; Minimalna liczba procesów potomnych, które zawsze będą uruchomione w trybie dynamicznym
pm.min_servers = 2
; Maksymalna liczba procesów potomnych w trybie dynamicznym i static/ondemand
pm.max_children = 15
Bez FPM serwer WWW musiałby uruchamiać interpreter PHP dla każdego żądania, co byłoby bardzo nieefektywne. FPM rozwiązuje ten problem, utrzymując gotowe do pracy procesy.