Middle
O que é PHP-FPM?
sobes.tech IA
Resposta da IA
O PHP-FPM (FastCGI Process Manager) é um gestor de processos FastCGI para PHP, alternativa ao padrão PHP FastCGI. Proporciona melhor desempenho ao processar pedidos web em ambientes de alta carga. O FPM gere um grupo de processos PHP que aguardam pedidos de entrada do servidor web (por exemplo, Nginx ou Apache através do módulo mod_proxy_fcgi).
Características e vantagens principais do FPM:
- Pool de processos: O FPM cria e gere um conjunto de processos PHP. Estes processos podem ser estáticos (número fixo), dinâmicos (criados conforme necessário dentro de limites definidos) ou sob demanda (criados ao receber um pedido e destruídos após o processamento). Isto permite uma utilização eficiente dos recursos do sistema.
- Melhor escalabilidade: Graças à gestão do grupo de processos, o FPM pode lidar com múltiplos pedidos simultaneamente, o que é crítico para aplicações de alta carga.
- Separação de processos: Cada pedido é processado por um processo FPM separado, o que aumenta a estabilidade. A falha de um pedido não afetará os outros.
- Configuração: Permite configurar de forma flexível o comportamento dos processos, por exemplo, o número máximo de pedidos por processo, tempo de vida do processo, gestão de memória.
- Integração com servidores web: Integra facilmente com servidores web populares através do protocolo FastCGI.
Exemplo de configuração do grupo de processos em php-fpm.d/www.conf:
; Nome do grupo
[www]
; Utilizador e grupo sob os quais os processos serão executados
user = www-data
group = www-data
; Escuta em um socket TCP:
; listen = 127.0.0.1:9000
; ...ou em um socket Unix:
listen = /run/php/php7.4-fpm.sock
; Método de gestão de processos:
; static - número fixo de processos (`pm.max_children`)
; dynamic - número dinâmico de processos (`pm.start_servers`, `pm.min_servers`, `pm.max_servers`)
; ondemand - criados ao receber uma solicitação (`pm.process_idle_timeout`, `pm.max_children`)
pm = dynamic
; Número inicial de processos filhos ao iniciar em modo dynamic
pm.start_servers = 5
; Número mínimo de processos filhos que estarão sempre em execução em modo dynamic
pm.min_servers = 2
; Número máximo de processos filhos em modo dynamic e static/ondemand
pm.max_children = 15
Sem FPM, o servidor web teria que lançar o interpretador PHP para cada pedido, o que seria muito ineficiente devido aos custos adicionais. O FPM resolve este problema mantendo processos prontos a trabalhar.