Middle
Qu'est-ce que PHP-FPM ?
sobes.tech IA
Réponse de l'IA
PHP-FPM (FastCGI Process Manager) est un gestionnaire de processus FastCGI pour PHP, alternative à la norme PHP FastCGI. Il offre de meilleures performances lors du traitement des requêtes web dans des environnements à forte charge. FPM gère un pool de processus PHP qui attendent les requêtes entrantes du serveur web (par exemple, Nginx ou Apache via le module mod_proxy_fcgi).
Caractéristiques et avantages clés de FPM :
- Pool de processus : FPM crée et gère un ensemble de processus PHP. Ces processus peuvent être statiques (nombre fixe), dynamiques (créés selon les besoins dans des limites définies) ou à la demande (créés lors de la réception d'une requête et détruits après traitement). Cela permet une utilisation efficace des ressources système.
- Meilleure évolutivité : Grâce à la gestion du pool de processus, FPM peut traiter plusieurs requêtes simultanément, ce qui est critique pour les applications à haute charge.
- Séparation des processus : Chaque requête est traitée par un processus FPM distinct, ce qui augmente la stabilité. La défaillance d'une requête n'affecte pas les autres.
- Configuration : Permet de configurer de manière flexible le comportement des processus, par exemple, le nombre maximal de requêtes par processus, la durée de vie du processus, la gestion de la mémoire.
- Intégration avec les serveurs web : S'intègre facilement avec les serveurs web populaires via le protocole FastCGI.
Exemple de configuration du pool de processus dans php-fpm.d/www.conf :
; Nom du pool
[www]
; Utilisateur et groupe sous lesquels les processus seront lancés
user = www-data
group = www-data
; Écoute sur un socket TCP :
; listen = 127.0.0.1:9000
; ...ou sur un socket Unix :
listen = /run/php/php7.4-fpm.sock
; Méthode de gestion des processus :
; static - nombre fixe de processus (`pm.max_children`)
; dynamic - nombre dynamique de processus (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - créés à la réception d'une requête (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Nombre initial de processus enfants au démarrage en mode dynamic
pm.start_servers = 5
; Nombre minimal de processus enfants toujours en cours d'exécution en mode dynamic
pm.min_servers = 2
; Nombre maximal de processus enfants en mode dynamic et static/ondemand
pm.max_children = 15
Sans FPM, le serveur web devrait lancer l'interpréteur PHP pour chaque requête, ce qui serait très inefficace en raison des coûts supplémentaires. FPM résout ce problème en maintenant des processus prêts à l'emploi.