Sobes.tech
Middle

Mis on PHP-FPM?

sobes.tech AI

Vastus AI-lt

PHP-FPM (FastCGI Process Manager) — see on FastCGI protsessihaldur PHP jaoks, alternatiiv standardsele PHP FastCGI-le. See tagab parema jõudluse suure koormusega veebipäringute töötlemisel. FPM haldab PHP protsesside basseini, mis ootavad sisenevaid päringuid veebiserivalt (näiteks Nginx või Apache mod_proxy_fcgi mooduli kaudu).

Peamised omadused ja eelised:

  • Protsesside bassein: FPM loob ja haldab PHP protsesside kogumit. Need protsessid võivad olla staatilised (fikseeritud arv), dünaamilised (loodud vastavalt vajadusele määratud piirides) või on-demand (loodud päringu saamisel ja hävitatakse pärast töötlemist). See võimaldab tõhusamalt kasutada süsteemi ressursse.
  • Parema skaleeritavuse: Protsesside basseini haldamisega saab FPM töödelda palju samaaegseid päringuid, mis on kriitiline suure koormusega rakenduste jaoks.
  • Protsesside eraldamine: Iga päring töödeldakse eraldi FPM protsessiga, mis suurendab stabiilsust. Ühe päringu ebaõnnestumine ei mõjuta teisi.
  • Konfiguratsioon: Võimaldab paindlikult seadistada protsesside käitumist, näiteks maksimaalne päringute arv protsessis, protsessi eluea aeg, mälu haldus.
  • Integreerimine veebiserveritega: Lihtne integreerida populaarsete veebiserveritega FastCGI protokolli kaudu.

Näide konfiguratsioonist php-fpm.d/www.conf:

; Basseini nimi
[www]

; Kasutaja ja grupp, kelle nimel protsessid käivitatakse
user = www-data
group = www-data

; Kuulamine TCP socketil:
; listen = 127.0.0.1:9000
; või Unix socketil:
listen = /run/php/php7.4-fpm.sock

; Protsesside juhtimise meetod:
; static - fikseeritud protsesside arv (`pm.max_children`)
; dynamic - dünaamiline protsesside arv (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - luuakse päringu saamisel (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic

; Algne laste arv, käivitamisel dünaamilises režiimis
pm.start_servers = 5

; Minimaalne laste arv, mis alati käivitatakse dünaamilises režiimis
pm.min_servers = 2

; Maksimaalne laste arv dünaamilises ja static/ondemand režiimis
pm.max_children = 15

Ilma FPM-ita oleks iga PHP-päringuga seotud server pidanud käivitama PHP tõlgendaja, mis on väga ebaefektiivne. FPM lahendab selle probleemi, hoides valmis tööprotsesse.