Middle
Čo je PHP-FPM?
sobes.tech AI
Odpoveď od AI
PHP-FPM (FastCGI Process Manager) — je správca procesov FastCGI pre PHP, alternatíva k štandardnému PHP FastCGI. Zabezpečuje lepší výkon pri spracovaní webových požiadaviek v prostrediach s vysokou záťažou. FPM riadi bazén PHP procesov, ktoré čakajú na prichádzajúce požiadavky od webového servera (napríklad Nginx alebo Apache cez modul mod_proxy_fcgi).
Kľúčové vlastnosti a výhody FPM:
- Bazén procesov: FPM vytvára a riadi súbor PHP procesov. Tieto procesy môžu byť statické (pevný počet), dynamické (sú vytvárané podľa potreby v stanovených hraniciach) alebo on-demand (sú vytvárané pri prijatí požiadavky a zničia sa po spracovaní). To umožňuje efektívne využívanie systémových zdrojov.
- Lepšia škálovateľnosť: Vďaka riadeniu bazéna procesov môže FPM spracovávať množstvo súčasne prichádzajúcich požiadaviek, čo je kritické pre vysoko zaťažované aplikácie.
- Oddelenie procesov: Každá požiadavka je spracovaná samostatným FPM procesom, čo zvyšuje stabilitu. Zlyhanie jednej požiadavky neovplyvní ostatné.
- Konfigurácia: Umožňuje flexibilne nastavovať správanie procesov, napríklad maximálny počet požiadaviek na proces, dobu života procesu, správu pamäte.
- Integrácia s webovými servermi: Jednoducho sa integruje s populárnymi webovými servermi cez protokol FastCGI.
Príklad konfigurácie bazéna procesov v php-fpm.d/www.conf:
; Názov bazéna
[www]
; Používateľ a skupina, pod ktorými budú procesy spustené
user = www-data
group = www-data
; Počúvanie na TCP sockete:
; listen = 127.0.0.1:9000
; ...alebo na Unix sockete:
listen = /run/php/php7.4-fpm.sock
; Metóda riadenia procesov:
; static - pevný počet procesov (`pm.max_children`)
; dynamic - dynamický počet procesov (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - vytvára sa pri prijatí požiadavky (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Počiatočný počet potomkov pri štarte v režime dynamic
pm.start_servers = 5
; Minimálny počet potomkov, ktorí budú vždy spustené v režime dynamic
pm.min_servers = 2
; Maximálny počet potomkov v režime dynamic a static/ondemand
pm.max_children = 15
Bez FPM by webový server pre každý PHP požiadavok musel spustiť interpret PHP, čo je veľmi neefektívne kvôli nákladom. FPM tento problém odstraňuje udržiavaním pripravených procesov.