Middle
Cos'è PHP-FPM?
sobes.tech AI
Risposta dell'AI
PHP-FPM (FastCGI Process Manager) è un gestore di processi FastCGI per PHP, alternativa allo standard PHP FastCGI. Offre migliori prestazioni nell'elaborazione delle richieste web in ambienti ad alta intensità di traffico. FPM gestisce un pool di processi PHP in attesa di richieste in arrivo dal server web (ad esempio, Nginx o Apache tramite il modulo mod_proxy_fcgi).
Caratteristiche e vantaggi principali di FPM:
- Pool di processi: FPM crea e gestisce un insieme di processi PHP. Questi processi possono essere statici (numero fisso), dinamici (creati secondo necessità entro limiti stabiliti) o on-demand (creati al ricevimento di una richiesta e distrutti dopo l'elaborazione). Questo permette un uso efficiente delle risorse di sistema.
- Migliore scalabilità: Grazie alla gestione del pool di processi, FPM può gestire molte richieste contemporaneamente, il che è critico per applicazioni ad alta intensità.
- Separazione dei processi: Ogni richiesta viene elaborata da un processo FPM separato, aumentando la stabilità. Un errore di una richiesta non influenzerà le altre.
- Configurazione: Permette di configurare in modo flessibile il comportamento dei processi, ad esempio, il numero massimo di richieste per processo, il tempo di vita del processo, la gestione della memoria.
- Integrazione con i server web: Si integra facilmente con i server web più diffusi tramite il protocollo FastCGI.
Esempio di configurazione del pool di processi in php-fpm.d/www.conf:
; Nome del pool
[www]
; Utente e gruppo sotto cui verranno eseguiti i processi
user = www-data
group = www-data
; Ascolto su socket TCP:
; listen = 127.0.0.1:9000
; ...o su socket Unix:
listen = /run/php/php7.4-fpm.sock
; Metodo di gestione dei processi:
; static - numero fisso di processi (`pm.max_children`)
; dynamic - numero dinamico di processi (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - creati al ricevimento di una richiesta (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Numero iniziale di processi figli all'avvio in modalità dynamic
pm.start_servers = 5
; Numero minimo di processi figli che saranno sempre in esecuzione in modalità dynamic
pm.min_servers = 2
; Numero massimo di processi figli in modalità dynamic e static/ondemand
pm.max_children = 15
Senza FPM, il server web avrebbe dovuto avviare l'interprete PHP per ogni richiesta, il che sarebbe molto inefficiente. FPM risolve questo problema mantenendo processi pronti all'uso.