Entendendo FastCGI, suPHP, CGI, mod_php(DSO) e PHP-FPM
O PHP não faz parte do servidor Apache nativamente, então para o PHP trabalhar junto ao Apache precisa-se de um Processador PHP
Opções mais utilizadas no mercado:
- DSO
- CGI
- suPHP
- FastCGI
- PHP-FPM
DSO
Abreviação para Dynamic Shared Object, ou mod_php é o mais antigo e o manipulador PHP mais rápido disponível. Ele faz o Apache interpretar a partir de um módulo dele mesmo chamado mod_php. Ele é executado diretamente no mesmo processo do Apache, sendo assim tem um consumo de CPU e memória muito baixo, porém com grandes aplicações o consumo de memória e processamento pode crescer muito. A desvantagem é a segurança, já que o mesmo usuário do Apache poderá ter acesso a todas as aplicações ou sites.
CGI
CGI é o fallback na memória dos servidores, quando o mod_php não esta disponível ele entra, nessa situação é executado em um processo separado do Apache, a vantagem é que ele tem a capacidade de executar o PHP com outro usuário, para isso utiliza o módulo do Apache conhecido como suexec. Uma grande desvantagem é o desempenho péssimo, sendo aconselhado apenas para sites minúsculos e a vantagem é um grau a mais de segurança.
FastCGI
Oferece benefícios do suPHP de segurança, executa como sendo o proprietário do arquivo, porém o FastCGI mantém aberta uma sessão para o arquivo quando o processamento é feito, com isso aumenta o uso de memória, mas também permite o uso de código de armazenamento em cache, como APC ou memcached. A vantagem é que o manipulador é muito rápido, mesmo em comparação com mod_php.
PHP-FPM
Até então é a última geração de manipulador PHP, o FPM (FastCGI Process Manager). É uma alternativa para implementação do FastCGI com algumas features adicionais principalmente para utilizar em sites pesados.
Gerenciamento de processos avançados com stop/start
“slowlog” – Armazena os registros de scripts executados muito lentamente (e não apenas seus nomes, mas o seu PHP backtraces também, usando ptrace e coisas semelhantes para o processo de leitura remota execute_data).
O Pcache melhora o desempenho do PHP, armazenando bytecode script pré-compilado em memória compartilhada, além disso, remove a necessidade do PHP de carregar e analisar scripts em cada pedido no disco.
Qual utilizar esta muito relacionado ao planejamento e infraestrutura, se você tiver recursos disponíveis não vejo razão para não utilizar o FastCGI ou PHP-FPM
Quando os recursos de hardware são limitados dai cabe a prioridade entre segurança vs desempenho:
mod_php | CGI | suPHP | FastCGI | PHP-FPM | |
---|---|---|---|---|---|
Uso de memória | Baixo | Baixo | Baixo | Alto | Alto |
Utilização do CPU | Baixo | Alto | Alto | Baixo | Baixo |
Segurança | Baixo | Baixo | Alto | Alto | Alto |
Executar como proprietário do arquivo | Não | Não | Sim | Sim | Sim |
Desempenho Geral | Rápido | Lento | Lento | Rápido | Rápido |
Como saber qual processador esta ativo em seu servidor
É muito simples, basta você exibir o phpinfo(); e procurar pelo Server API:
https://brasilcloud.com.br/duvidas/diferenca-fastcgi-suphp-cgi-mod_php-dso-fpm/