Eu queria perguntar sobre os métodos de configuração do PHP / Apache, seus prós e contras. Eu vou me começar:
---------------- PHP como módulo Apache ----------------
Prós : boa velocidade, pois você não precisa iniciar o exe sempre, especialmente no modo mpm-worker . Você também pode usar vários aceleradores PHP nesse modo, como APC ou eAccelerator.
Contras : se você estiver executando o apache no modo mpm-worker, poderá enfrentar problemas de estabilidade, pois todas as falhas em qualquer script php levarão à instabilidade de todo o conjunto de threads desse processo apache. Também neste modo, todos os scripts são executados em nome do usuário apache. Isso é ruim para a segurança. A configuração do mpm-worker requer o PHP compilado no modo de segurança de threads. Pelo menos os repositórios padrão do CentOS e RedHat não possuem a versão PHP segura para threads; portanto, nesses sistemas operacionais, você precisa compilar pelo menos o próprio PHP (existe uma maneira de ativar o worker mpm no Apache). O uso de binários PHP seguros para threads é considerado experimental e instável. Além disso, muitas extensões PHP não suportam o modo de segurança de thread ou não foram bem testadas no modo de segurança de thread.
---------------- PHP como CGI ----------------
Essa parece ser a configuração padrão mais lenta que parece ser um "contra";)
---------------- PHP como CGI via mod_suphp ----------------
Prós : o suphp permite executar php scipts em nome do proprietário do arquivo de script. Dessa forma, você pode separar com segurança diferentes sites na mesma máquina. Além disso, o suphp permite usar diferentes arquivos php.ini por host virtual.
Contras : PHP no modo CGI significa menos desempenho. Nesse modo, você não pode usar aceleradores php como o APC, porque cada vez que um novo processo é gerado para lidar com scripts, torna inútil o cache do processo anterior. BTW, você sabe como aplicar algum acelerador nesta configuração? Ouvi algo sobre o uso de shm para cache de bytecode php. Além disso, você não pode configurar o PHP via arquivos .htaccess neste modo. Você precisará instalar o P ECL htscanner para isso se precisar definir várias opções por script via .htaccess (diretivas php_value / php_flag)
---------------- PHP como CGI via suexec ----------------
Essa configuração é igual à do suphp, mas ouvi dizer que é mais lenta e menos segura. Quase os mesmos prós e contras se aplicam.
---------------- PHP como FastCGI ----------------
Prós : O padrão FastCGI permite que um processo php único processe vários scripts antes que o processo php seja eliminado. Dessa forma, você obtém desempenho, pois não é necessário criar um novo processo php para cada script. Você também pode usar aceleradores PHP nesta configuração (consulte a seção contras para comentar). Além disso, o FCGI quase como o suphp também permite que processos php sejam executados em nome de algum usuário. O mod_fcgid parece ter o mais completo suporte e flexibilidade do fcgi para o apache.
Contras : O uso do acelerador php no modo fastcgi levará a um alto consumo de memória, pois cada processo PHP terá seu próprio cache de bytecode (a menos que exista algum acelerador que possa usar a memória compartilhada para o cache de bytecode. Existe?). O FastCGI também é um pouco complexo de configurar. Você precisa criar vários arquivos de configuração e fazer algumas modificações na configuração.
Parece que fastcgi é a configuração PHP mais estável, segura, rápida e flexível, porém um pouco difícil de ser configurada. Mas, pode ser, eu perdi alguma coisa?
Comentários são bem-vindos!