Diferença FastCGI, suPHP, CGI, mod_php (DSO) e PHP-FPM

Introdução

Neste artigo quero demonstrar como o PHP trabalha junto ao Apache, uma vez que o PHP não faz parte do servidor web e precisa "comunicar" de alguma forma com o PHP para gerar as páginas, mais como isso funciona? Usando um Processador PHP! veja as opções que hoje existe mais utilizadas e difundidas no mercado:


DSO

(que é a abreviação para Dynamic Shared Object) ou mod_php é o mais antigo e, alguns diriam, o manipulador PHP mais rápida disponível. Ele faz o Apache interpretar o próprio código PHP através do uso de um módulo do Apache conhecido como mod_php. Este é o manipulador padrão normalmente instalado.

No mod_php tem o lado positivo que é rápido, de fato muito rápido como ele é executado diretamente no mesmo processo com o servidor Apache. Executando em conjunto com o Apache significa que ele tem um consumo de CPU e memória muito baixo.

 

CGI

CGI é o fallback na maioria dos servidores quando mod_php não está disponível. Em vez de executar o código PHP dentro do Apache agora é executado em um próprio processo do CGI, ou seja, em um programa fora do seu servidor Apache.

Por padrão o CGI será chamado pelo servidor Apache o que significa que ele será executado com o usuário do Apache e com todos os problemas que o mod_php encontrou. Ao contrário mod_php no entanto o CGI tem a capacidade de executar o PHP como outro usuário (presumivelmente o usuário do site) usando outro módulo do Apache conhecido como suexec.

 

suPHP

suPHP inicia fora do script do Apache como o CGI. Ao contrário de CGI no entanto, ele vai executar os scripts como um usuário diferente do usuário do Apache (presumivelmente o usuário do site). Isto significa que se você estiver usando um CMS você será capaz de fazer upload de arquivos dentro de sua aplicação web usando suPHP. Além disso, porque o seu PHP está sendo executado como um usuário diferente de qualquer vulnerabilidade no seu site pode ser restrito a apenas os arquivos de seu site proporcionando assim benefícios substanciais de segurança particularmente em servidores que executam vários sites.

 

FastCGI


Ele oferece os benefícios suPHP de segurança, executando arquivos como o proprietário do arquivo. Ao contrário o suPHP no entanto, mantém aberta uma sessão para o arquivo quando o processamento é feito, resultando em uso de memória significativa, mas também permitindo o uso de código de operação de armazenamento em cache, como APC ou memcached. Se você tem memória para ele, FastCGI é sem dúvida o manipulador mais rápido, mesmo em comparação com mod_php.

 

PHP-FPM

PHP-FPM é a última geração de manipulador PHP. FPM (FastCGI Process Manager) é uma alternativa para a implementação FastCGI com algumas features adicionais (principalmente) usado em sites pesados:
Gerenciamento de processos avançado com stop/start;
"slowlog" - Armazena os registro 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).
OPcache melhora o desempenho do PHP, armazenando bytecode script pré-compilado em memória compartilhada, remove a necessidade do PHP de carregar e analisar scripts em cada pedido no disco.

 

Então, qual é o melhor?

Se você tiver a memória, não há realmente nenhuma razão para não usar o FastCGI ou PHP-FPM. Em casos onde a memória é baixa no entanto ou ambiente com multi sites, a escolha pode ser analisada segurança vs desempenho. Aqui está uma análise rápida para ajudá-lo a decidir.

Precisa de Hospedagem com PHP-FPM? Veja nossos Planos.
 
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

Dúvidas?

Entre em contato conosco, teremos prazer em atendê-lo.

Telefone

(34) 3517-7093