Middle
Mi az a PHP-FPM?
sobes.tech MI
Válasz az MI-től
PHP-FPM (FastCGI Process Manager) a PHP-hez egy FastCGI folyamatkezelő, alternatívája a szokásos PHP FastCGI-nak. Jobb teljesítményt nyújt magas terhelésű környezetekben a webkérések feldolgozásában. Az FPM egy PHP folyamatokból álló poolt kezel, amelyek várakoznak a web szerver (pl. Nginx vagy Apache mod_proxy_fcgi modul) bejövő kéréseire.
Az FPM fő jellemzői és előnyei:
- Folyamat pool: Az FPM létrehoz és kezel egy PHP folyamatokból álló csoportot. Ezek a folyamatok lehetnek statikusak (állandó szám), dinamikusak (szükség szerint, meghatározott határok között), vagy kérésre (kérés érkezésekor jönnek létre, és a feldolgozás után törlődnek). Ez hatékony erőforrás-használatot tesz lehetővé.
- Jobb skálázhatóság: A folyamat pool kezelése révén az FPM több egyidejű kérést képes kezelni, ami kritikus magas terhelésű alkalmazásoknál.
- Folyamatok elkülönítése: Minden kérés külön FPM folyamat által kerül feldolgozásra, növelve a stabilitást. Egy kérés hibája nem befolyásolja a többit.
- Konfigurálhatóság: Rugalmasan beállítható a folyamatok viselkedése, például maximális kérés szám folyamatonként, folyamat életideje, memória kezelés.
- Web szerverekkel való integráció: Könnyen integrálható népszerű web szerverekkel a FastCGI protokollon keresztül.
Példa a folyamat pool konfigurációjára a php-fpm.d/www.conf fájlban:
; Pool neve
[www]
; Felhasználó és csoport, amely alatt a folyamatok futnak
user = www-data
group = www-data
; Hallgatás TCP socket-on:
; listen = 127.0.0.1:9000
; ...vagy Unix socket-on:
listen = /run/php/php7.4-fpm.sock
; Folyamatkezelési módszer:
; static - fix számú folyamat (`pm.max_children`)
; dynamic - dinamikus számú folyamat (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - kérésre jön létre (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Kezdeti gyermek folyamatok száma dinamikus módban
pm.start_servers = 5
; Minősített gyermek folyamatok száma, amelyek mindig futnak
pm.min_servers = 2
; Maximális gyermek folyamatok száma dinamikus és static/ondemand módban
pm.max_children = 15
FPM nélkül a web szerver minden PHP kéréshez elindítaná a PHP értelmezőt, ami nagyon nem hatékony. Az FPM ezt a problémát úgy oldja meg, hogy készen álló folyamatokat tart fenn.