PHP: Quais são as vantagens do FastCGI sobre o mod_php?

30

Recentemente, foi sugerido que eu use o FastCGI com PHP. Agora eu fui para a página do FastCGI e li, mas realmente não entendo quais são as vantagens.

cleto
fonte

Respostas:

37

Usando mod_php, cada trabalhador do Apache tem todo o interpretador PHP carregado nele. Como o Apache precisa de um processo de trabalho por solicitação recebida, você pode acabar rapidamente com centenas de trabalhadores do Apache em uso, cada um com seu próprio interpretador PHP carregado, consumindo grandes quantidades de memória.

(Observe que isso não é exatamente verdade, o Apache worker_mpmpermite que você atenda muitas solicitações com um único trabalhador Apache encadeado. No entanto, mesmo em 2009, essa não é a maneira recomendada de implantar o PHP devido a problemas suspeitos de encadeamento nas extensões PHP.)

Usar o PHP no modo fast_cgi (usar algo como spawn-fcgi no pacote lighttpd) tem os seguintes benefícios

  • ajustar o número de trabalhadores PHP separadamente do número de conexões de entrada
  • permitem que você coloque funcionários PHP em um servidor diferente ou faça a escala em vários servidores sem alterar seu nível da web
  • oferece flexibilidade para escolher um servidor Web diferente, como nginx ou lighttpd
  • permitem executar seu aplicativo PHP em um domínio de segurança diferente em seu servidor da web
Dave Cheney
fonte
5

FastCGI significa que os bits php não estão sendo executados no mesmo processo que os bits apache, ao contrário do mod_php. Essa separação pode ter algumas vantagens definitivas quando se trata de reiniciar o servidor ou lidar com aplicativos descontrolados - no caso mod_php, isso significa que o processo apache é "descontrolado", mas sob fastcgi é apenas um processo com o qual o apache está falando, então o servidor inteiro não precisa ser desativado.

pjz
fonte
4

Outra vantagem ainda não mencionada é o fato de que com mod_fcgid(que é uma implementação mais recente para o uso do FastCGI no Apache) e suexec, você pode realizar configurações em que diferentes vhosts usam diferentes usuários do Linux para execução, o que pode ser um benefício real de segurança em um ambiente de hospedagem compartilhada .

Com mod_php, todos os vhosts compartilham o mesmo usuário, que é o usuário do Apache. Isso pode levar a problemas de segurança.

Martin C.
fonte
Depende do MPM usado nesta configuração específica do httpache do Apache. Por exemplo, com o MPM-itk ( mpm-itk.sesse.net ), é possível usar o mod_php e fazer com que os scripts (ou melhor: os processos httpd) sejam executados no contexto de outro usuário.
Joschi