Middle
Co je PHP-FPM?
sobes.tech AI
Odpověď od AI
PHP-FPM (FastCGI Process Manager) je správce procesů FastCGI pro PHP, alternativní k standardnímu PHP FastCGI. Zajišťuje lepší výkon při zpracování webových požadavků ve vysoce zatížených prostředích. FPM spravuje skupinu PHP procesů, které čekají na příchozí požadavky od webového serveru (například Nginx nebo Apache přes modul mod_proxy_fcgi).
Klíčové vlastnosti a výhody FPM:
- Pool procesů: FPM vytváří a spravuje sadu PHP procesů. Tyto procesy mohou být statické (pevný počet), dynamické (vytvářejí se podle potřeby v daných mezích) nebo na požádání (vytvoří se při přijetí požadavku a po zpracování jsou ukončeny). To umožňuje efektivní využití systémových zdrojů.
- Lepší škálovatelnost: Díky správě poolu procesů může FPM zpracovávat více požadavků současně, což je kritické pro vysoce zatížené aplikace.
- Oddělení procesů: Každý požadavek je zpracován samostatným FPM procesem, což zvyšuje stabilitu. Selhání jednoho požadavku neovlivní ostatní.
- Konfigurace: Umožňuje flexibilně nastavovat chování procesů, například maximální počet požadavků na proces, dobu života procesu, správu paměti.
- Integrace s webovými servery: Snadno se integruje s oblíbenými webovými servery přes protokol FastCGI.
Příklad konfigurace poolu procesů v php-fpm.d/www.conf:
; Název poolu
[www]
; Uživatel a skupina, pod kterou budou procesy běžet
user = www-data
group = www-data
; Poslouchání na TCP socketu:
; listen = 127.0.0.1:9000
; ...nebo na Unix socketu:
listen = /run/php/php7.4-fpm.sock
; Metoda správy procesů:
; static - pevný počet procesů (`pm.max_children`)
; dynamic - dynamický počet procesů (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - vytváří se na požádání (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Počáteční počet dětských procesů při spuštění v dynamickém režimu
pm.start_servers = 5
; Minimální počet dětských procesů, které budou vždy spuštěny v dynamickém režimu
pm.min_servers = 2
; Maximální počet dětských procesů v dynamickém a statickém/ondemand režimu
pm.max_children = 15
Bez FPM by webový server musel spouštět interpret PHP pro každý požadavek, což by bylo velmi neefektivní. FPM tento problém řeší tím, že udržuje připravené procesy.