Middle
Šta je PHP-FPM?
sobes.tech АИ
Одговор од АИ
PHP-FPM (FastCGI Process Manager) — ovo je menadžer FastCGI procesa za PHP, alternativni standardnom PHP FastCGI-ju. On obezbeđuje bolju performansu pri obradi web zahteva u sredinama sa velikim opterećenjem. FPM upravlja bazenom PHP procesa koji čekaju na dolazne zahteve od web servera (na primer, Nginx ili Apache putem modula mod_proxy_fcgi).
Ključne osobine i prednosti FPM-a:
- Bazen procesa: FPM kreira i upravlja skupom PHP procesa. Ovi procesi mogu biti statični (fiksni broj), dinamični (kreiraju se po potrebi u zadatim granicama) ili on-demand (kreiraju se po prijemu zahteva i uništavaju nakon obrade). Ovo omogućava efikasno korišćenje sistemskih resursa.
- Bolja skalabilnost: Zahvaljujući upravljanju bazenom procesa, FPM može obrađivati više istovremenih zahteva, što je ključno za visoko opterećene aplikacije.
- Razdvajanje procesa: Svaki zahtev se obrađuje posebnim FPM procesom, što povećava stabilnost. Neuspeh jednog zahteva neće uticati na druge.
- Konfiguracija: Omogućava fleksibilno podešavanje ponašanja procesa, na primer, maksimalan broj zahteva po procesu, vreme trajanja procesa, upravljanje memorijom.
- Integracija sa web serverima: Lako se integriše sa popularnim web serverima putem FastCGI protokola.
Primer konfiguracije bazena procesa u php-fpm.d/www.conf:
; Ime bazena
[www]
; Korisnik i grupa pod kojima će se pokretati procesi
user = www-data
group = www-data
; Slušanje na TCP soketu:
; listen = 127.0.0.1:9000
; ...ili na Unix soketu:
listen = /run/php/php7.4-fpm.sock
; Metod upravljanja procesima:
; static - fiksni broj procesa (`pm.max_children`)
; dynamic - dinamički broj procesa (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - kreira se po prijemu zahteva (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Početni broj potomaka pri pokretanju u režimu dynamic
pm.start_servers = 5
; Minimalni broj potomaka koji će uvek biti pokrenuti u režimu dynamic
pm.min_servers = 2
; Maksimalni broj potomaka u režimu dynamic i static/ondemand
pm.max_children = 15
Bez FPM, web server bi za svaki PHP zahtev morao da pokreće PHP interpreter, što je veoma neefikasno zbog troškova. FPM rešava ovaj problem održavanjem spremnih procesa za rad.