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 |