Mode gestionnaire de processus PHP
PHP-FPM, ou FastCGI Process Manager for PHP, propose plusieurs modes de gestion de ses processus de travail. Ces modes déterminent comment PHP-FPM créera, maintiendra et recyclera les processus enfants qui gèrent les requêtes PHP. Le mode est défini à l'aide de la directive de configuration pm .

dynamic (par défaut)
En mode dynamic , PHP-FPM ajuste dynamiquement le nombre de processus enfants générés en fonction de la demande et contrôlé par les directives suivantes :

pm.max_children le nombre maximum d'enfants pouvant être en vie en même temps
pm.start_servers le nombre d'enfants créés au démarrage
pm.min_spare_servers le nombre minimum d'enfants en état « inactif » (en attente de traitement). Si le nombre de processus « inactifs » est inférieur à ce nombre, des enfants seront créés.
pm.max_spare_servers le nombre maximum d'enfants en état « inactif » (en attente de traitement). Si le nombre de processus « inactifs » est supérieur à ce nombre, certains enfants seront tués.
pm.max_spawn_rate le nombre maximum de taux pour générer des processus enfants à la fois

Les avantages incluent l'ajustement automatique du nombre de processus enfants en fonction de la demande, garantissant ainsi une utilisation optimale des ressources. Ceci est particulièrement utile pour les serveurs dont les charges fluctuent.

static
En mode static , PHP-FPM maintient un nombre fixe de processus enfants. Ce nombre est spécifié par la directive pm.max_children . Les avantages incluent une utilisation cohérente de la mémoire grâce à un nombre constant de processus enfants. C’est idéal pour les serveurs avec des charges stables.

ondemand
En mode ondemand , aucun enfant n'est créé au démarrage. Au lieu de cela, PHP-FPM générera des processus enfants uniquement lorsque cela est nécessaire, c'est-à-dire lorsqu'une requête entrante nécessite un traitement. Le nombre maximum d'enfants pouvant être en vie en même temps est contrôlé par la directive pm.max_children . Les processus sont ensuite terminés après avoir été inactifs pendant une durée spécifiée par la directive pm.process_idle_timeout . Les avantages incluent une utilisation réduite de la mémoire pendant les périodes de trafic faible ou inexistant. Idéal pour les serveurs avec des charges intermittentes ou les applications avec des modèles de trafic imprévisibles.

Le meilleur mode pour votre application peut varier en fonction des ressources disponibles du serveur, des modèles de trafic et des caractéristiques spécifiques de l'application. Il est essentiel de surveiller et d'affiner les paramètres pour obtenir des performances optimales.