Modalità di gestione dei processi PHP
PHP-FPM, o FastCGI Process Manager per PHP, fornisce diverse modalità di gestione per i suoi processi di lavoro. Queste modalità determinano il modo in cui PHP-FPM creerà, manterrà e riciclerà i processi figli che gestiscono le richieste PHP. La modalità viene impostata utilizzando la direttiva di configurazione pm .

dynamic (predefinito)
Nella modalità dynamic , PHP-FPM regola dinamicamente il numero di processi figli generati in base alla domanda e controllato dalle seguenti direttive:

pm.max_children il numero massimo di bambini che possono vivere contemporaneamente
pm.start_servers il numero di figli creati all'avvio
pm.min_spare_servers il numero minimo di bambini in stato "inattivo" (in attesa di processo). Se il numero di processi 'inattivi' è inferiore a questo numero, verranno creati alcuni figli
pm.max_spare_servers il numero massimo di bambini in stato "inattivo" (in attesa di elaborazione). Se il numero di processi "inattivi" è maggiore di questo numero, alcuni bambini verranno uccisi
pm.max_spawn_rate il numero massimo di velocità per generare processi figli contemporaneamente

I vantaggi includono la regolazione automatica del numero di processi secondari in base alla domanda, garantendo un utilizzo ottimale delle risorse. Ciò è particolarmente utile per i server con carichi fluttuanti.

static
Nella modalità static , PHP-FPM mantiene un numero fisso di processi figli. Questo numero è specificato dalla direttiva pm.max_children . I vantaggi includono un utilizzo coerente della memoria grazie a un numero costante di processi secondari. Questo è l'ideale per i server con carichi stabili.

ondemand
Nella modalità ondemand , all'avvio non vengono creati figli. Invece PHP-FPM genererà processi figli solo quando necessario, ovvero quando c'è una richiesta in arrivo che necessita di elaborazione. Il numero massimo di bambini che possono essere vivi contemporaneamente è controllato dalla direttiva pm.max_children . I processi vengono quindi terminati dopo essere rimasti inattivi per un periodo di tempo specificato dalla direttiva pm.process_idle_timeout . I vantaggi includono un utilizzo ridotto della memoria durante i periodi di traffico scarso o assente. Ideale per server con carichi intermittenti o applicazioni con modelli di traffico imprevedibili.

La modalità migliore per la tua applicazione può variare in base alle risorse disponibili del server, ai modelli di traffico e alle caratteristiche specifiche dell'applicazione. È essenziale monitorare e ottimizzare le impostazioni per ottenere prestazioni ottimali.