Middle
Ce este PHP-FPM?
sobes.tech AI
Răspuns de la AI
PHP-FPM (FastCGI Process Manager) este un manager de procese FastCGI pentru PHP, alternativ la standardul PHP FastCGI. Asigură o performanță mai bună în procesarea cererilor web în medii cu trafic intens. FPM gestionează un pool de procese PHP care așteaptă cererile de intrare de la serverul web (de exemplu, Nginx sau Apache prin modulul mod_proxy_fcgi).
Caracteristici și avantaje principale ale FPM:
- Pool de procese: FPM creează și gestionează un set de procese PHP. Aceste procese pot fi statice (număr fix), dinamice (create după nevoie în limite stabilite) sau la cerere (create la primirea unei cereri și distruse după procesare). Acest lucru permite utilizarea eficientă a resurselor sistemului.
- Scalabilitate mai bună: Datorită gestionării pool-ului de procese, FPM poate procesa multiple cereri simultan, ceea ce este critic pentru aplicațiile cu trafic intens.
- Separarea proceselor: Fiecare cerere este procesată de un proces FPM separat, ceea ce crește stabilitatea. Eșecul unei cereri nu va afecta celelalte.
- Configurare: Permite configurarea flexibilă a comportamentului proceselor, de exemplu, numărul maxim de cereri pe proces, timpul de viață al procesului, gestionarea memoriei.
- Integrare cu servere web: Se integrează ușor cu servere web populare prin protocolul FastCGI.
Exemplu de configurare a pool-ului de procese în php-fpm.d/www.conf:
; Numele pool-ului
[www]
; Utilizator și grup sub care vor fi rulate procesele
user = www-data
group = www-data
; Ascultare pe un socket TCP:
; listen = 127.0.0.1:9000
; ...sau pe un socket Unix:
listen = /run/php/php7.4-fpm.sock
; Metoda de gestionare a proceselor:
; static - număr fix de procese (`pm.max_children`)
; dynamic - număr dinamic de procese (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - create la cerere (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Numărul inițial de procese copil la pornire în modul dynamic
pm.start_servers = 5
; Numărul minim de procese copil care vor fi întotdeauna în funcțiune în modul dynamic
pm.min_servers = 2
; Numărul maxim de procese copil în modul dynamic și static/ondemand
pm.max_children = 15
Fără FPM, serverul web ar fi trebuit să pornească interpretul PHP pentru fiecare cerere, ceea ce ar fi foarte ineficient. FPM rezolvă această problemă menținând procese gata de lucru.