Há alguns dias, escrevi um post aqui no site falando sobre o sucesso da parceria entre o framework PHP e o container web da Microsoft – o Internet Information Services (IIS) sendo executado no Windows Server 2008 R2. Você pode efetuar a leitura deste post clicando AQUI. Neste texto apresentei as linhas gerais das tecnologias que possibilitam o sucesso de aplicações PHP sendo executadas em ambiente Windows e nos comprometemos em posts futuros a “dissecar” cada um destes componentes. Assim, com este artigo, inicio esta série descritiva das tecnologias.
CGI – Visão geral
Antes de apresentarmos o FastCGI é fundamental entender o modelo que o precede e no qual é baseado, i.e., o funcionamento dos programas CGI e o contexto de atuação desta metodologia. Diz o dito popular que “uma imagem vale mais que mil palavras”, assim, considere a Figura 1 (retirada do livro “CGI Programming on the World Wide Web“).
Figura 1. O modelo Client/Server com CGI
Na Figura 1, temos três timelines: a do cliente (à esquerda), a do servidor web (central) e a da aplicação CGI (à direita). A seguir, descrevemos de forma mais detalhada cada um dos ítens numerados.
-
O usuário realiza um requisição via browser. Esta requisição então é direcionada através do protocolo HTTP para o servidor web.
-
Indica que o servidor web recebeu a requisição com sucesso, identificou o recurso solicitado e devolveu a resposta para o cliente (no exemplo, um formulário).
-
O formulário é então preenchido e devolvido novamente através do método post do protocolo HTTP, por exemplo. O servidor web identifica que estes dados precisam ser processados.
-
O servidor web direciona o processamento para o módulo CGI, que realiza esta tarefa.
-
O módulo CGI devolve a resposta formatada para o servidor web.
-
O servidor web devolve a resposta para o cliente em formato HTML para que o browser interprete.
É importante mencionar que, muito embora o módulo CGI na Figura 1 esteja com sua timeline separada das demais, em um cenário real, o mesmo escontra-se encapsulado dentro do servidor web.
Além disso, uma observação importante e que está intimamente relacionada com a utilização do CGI para a execução framework PHP no amebiente do IIS é: o CGI poderia conectar outras aplicações no momento em que o passo 4 ocorre, assim, ele poderia atuar como um conector de PHP, Ruby, etc.
FastCGI – Visão geral
Com base nas informações acima, é possível entender mais claramente o contexto em que o FastCGI se enquadra.
O FastCGI é uma tecnologia (disponibilizada na forma de extensão) que permite que frameworks terceiros (não suportados nativamente pelo Internet Information Services) e que utilizem CGI (Common Gateway Interface) como padrão para conexão de aplicações externas. Quando instalado e habilitado no IIS, FastCGI atua como um módulo que possibilita a conexão com aplicações externas de forma otimizada, caracterizando-se assim, como uma evolução do modelo CGI tradicionalmente utilizado.
Principais características
FastCGI soluciona muitos problemas existentes no CGI tradicional e adiciona novas e importantes características. A seguir, discutimos as principais vantagens da nova tecnologia.
1. Performance
FastCGI soluciona problemas de performance (nativos no modelo CGI tradicional), o que faz com que o container web que o implementa, experimente um considerável incremento de performance ao trabalhar com frameworks como PHP, por exemplo.
O problema ao qual nos referimos está associado a maneira como as aplicações CGI são gerenciadas. Em uma aplicação CGI, para cada nova requisição a ser tratada, um novo processo é criado. Os problemas inerentes a esta abordagem são visíveis. Se muitas requisições são realizadas ao mesmo tempo, o número de processos em memória aumenta exponencialmente, o que torna o container web lento.
FastCGI soluciona este problema através de um gerenciamento otimizado de processos. Aqui, os processos são persistentes e podem ser utilizados para diferentes requisições. Com isso, o número de processos em memória são reduzidos drasticamente, o que gera no container um incremento considerável de performance.
2. Compatibilidade
Tem CGI instalado no meu servidor com muitas aplicações em execução, mas gostaria de implementar FastCGI porque acredita que pode ter incremento de qualidade em seu host? Sem problemas! FastCGI foi construído para executar aplicações projetadas com base em CGI, assim, suas aplicações que hoje funcionam perfeitamente com CGI, deverão funcionar com FastCGI também.
3. Independência de linguagem
Este é um ponto fundamental. Com FastCGI no IIS, você pode adicionar extensões de outras frameworks e trabalhar normalmente com elas. O mito “IIS só funciona bem para .NET” cai por terra com o advento desta tecnologia. PHP no IIS é prova desta afirmação.
4. Isolamento de processos
FastCGI é seguro. Muito desta afirmação se deve ao fato de que os processos são isolados com FastCGI. Assim, aplicações maliciosas não conseguem acessar informações de outras em um mesmo container web. Um bug neste processo, poderia implicar em grandes problemas. Com FastCGI sua aplicação estará blindada contra este tipo de problema.
O FastCGI para IIS é um dos grandes responsáveis por propocionar uma rica experiência para desenvolvedores PHP no ambiente Windows.
Alguns links:
- Site oficial do FastCGI: http://www.fastcgi.com/
- Instalação, configuração do FastCGI no IIS 7: http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis/
- Download do FastCGI for IIS 7: http://www.iis.net/download/FastCGI/
Facebook
Twitter
Instagram
LinkedIn
RSS