Houve um tempo na história, onde, profissionais que trabalhavam majoritariamente com a linguagem PHP não trocavam informações com profissionais que trabalhavam com outras plataformas, especialmente a plataforma .NET. Evidente que os problemas nunca foram derivados das tecnologias (PHP e .NET), mas sim, de algum tipo de preconceito (se com razão ou não, não sou eu quem vai dizer) que a comunidade open source nutria pela Microsoft. O fato é que, por muitos anos, mesmo com ambas as tecnologias sendo boas, elas nunca convergiram.
Nos últimos 4-5 anos, a Microsoft vem mudando este quadro e quebrando paradigmas. Tem se aproximado da comunidade PHP e tem implementado diversas iniciativas para incentivar a interoperabilidade de suas soluções. Como prova desta afirmação, basta analisar o container para execução de páginas server-side da empresa, o IIS (Internet Information Services). Hoje temos PHP trabalhando de forma nativa dentro do IIS (utilizando tecnologias como FastCGI e WinCache, ambas construídas com o apoio maciço da comunidade PHP) e não apenas funcionando, funcionando de forma consistente, suportando grandes cargas de requisições e dados. Além disso, a Microsoft tem investido também na construção de drivers e kits de acesso a dados, para que PHP na plataforma Windows, trabalhe nativamente com SQL Server, a plataforma de armazenamento e gerenciamento de dados da empresa.
Além das soluções de servidores apresentadas acima, a Microsoft tem investido em ferramentas de produtividade, para auxiliar desenvolvedores e designers a obterem uma melhor experiência no processo de construção de suas aplicações PHP. O maior exemplo disso que acabamos de citar, é o advento do WebMatrix, um IDE (Integrated Development Enviroment) desenhado para atender desenvolvedores com pouca ou muita experiência, que queiram trabalhar com .NET ou PHP e que utilize SQL Server ou MySQL de forma rápida, eficiente e segura. Aqui no site já escrevi vários posts sobre WebMatrix, assim, se estiver interessado em saber mais sobre a ferramenta, recomendo seguir os links abaixo:
- Série de artigos sobre WebMatrix e Razor
- Centro de Treinamento de WebMatrix no MSDN Brasil
- Página dedicada ao WebMatrix no portal iMasters
Entendendo o contexto da web atual
Quando fala-se em “contexto da web atual”, muitas coisas podem ser subentendidas, assim, o que queremos dizer com esta expressão basicamente é: “o que clientes e empresas esperam da web atual”. Neste contexto, tem-se basicamente duas vertentes a serem analisadas: “empresas e clientes” e “técnicos”. A seguir, descrevo um pouco do que entendo serem as necessidades básicas em ambos os casos.
Como empresas tem se relacionado com seus clientes?
Pensando no ambiente web, as empresas de forma geral tem procurado manter blogs e uma intensa integração com redes sociais (pelo menos com as principais: facebook, twittter, etc.). Evidentemente que o objetivo final deste modelo é a comunicação com o cliente. As empresas estão cientes do poder proporcionado ao usuário final através da internet e como consequência, tentam marcar presença de forma intensa neste território,compartilhando fotos, vídeos, promoções especiais de produtos, portifólios online, etc. Como elas tem feito? Aplicações web!
Evidentemente que, como estamos falando de negócios, empresas, etc., não se pode esquecer jamais da palavra mágica do mercado corporativo, isto é, produtividade. Com frequência desenvolvedores são questionados acerca de como podem desenvolver soluções de negócios de forma produtiva. Neste contexto, aplicações OSS (Open Source Software) apresentam-se como excelentes alternativas para implementar soluções robustas, confiáveis e com alto nível de produtividade.
Desenvolvedores e IT Pros, como podem atender a esta demanda?
Imagine um modelo onde a estrutura toda de servidores está baseada na plataforma Windows. Imagine agora que esta empresa deseja implementar um blog que ofereça informações específicas para clientes de forma geral e que seja integrada com redes sociais. Adicione a este cenário o fato de que tudo isso deve ocorrer de forma rápida e que novos custos não podem ser adicionados.
Se levarmos em consideração que as principais aplicações CMS existentes são escritas em linguagem PHP e que rodam sobre bases MySQL, chegamos a única solução possível: PHP deve funcionar no IIS e MySQL deve funcionar no Windows Server.
Se esta situação ocorresse ha algum tempo atrás, por certo as pessoas responsáveis pela parte técnica estariam com um sério problema. Entretanto, felizmente este cenário encontra-se consideravelmente mais amigável e funcional. Quem ganha com isso? Todos (empresas, desenvolvedores, técnicos, etc.)!
Do que trata este texto?
Assim, este artigo irá apresentar alguns aspectos técnicos relacionados ao suporte nativo oferecido pelo IIS ao core da linguagem PHP e, como consequência, exaltar evidências que o faça considerar este cenário ao colocar suas aplicações PHP em ambiente de produção.
FastCGI. O que é para o que serve?
FastCGI é um componente de software permite que aplicações PHP possam ser hospedadas em ambiente Windows (com IIS). Antes do advento do FastCGI, para executar o mesmo procedimento, desenvolvedores possuiam basicamente duas opções: CGI e ISAPI. Aqueles que tentaram realizar algo neste sentido, sabem das dificuldades encontradas por estes modelos. Lentidão, insegurança e instabilidade eram algumas das características recorrentes neste cenário.
FastCGI gerencia requisições PHP de forma segura (isto é possível através da entrega de um ambiente single-thread para aplicações não seguras). Além de segurança, esta característica proporciona incremento de performance, em função do isolamento de processos.
A Figura 1 apresenta a camada de atuação do FastCGI em ambiente de produção no IIS.
Figura 1: camada de atuação FastCGI
Um dos maiores investimentos por parte da Microsoft na comunidade opensource para o desenvolvimento de extensões seguras e performáticas para PHP para Windows foi justamente na implementação do FastCGI para IIS. O objetivo deste texto não é discutir todos os detalhes funcionais de tecnologias pontuais (isso será realizado em artigos futuros), mas sim, apresentar as linhas gerais que permitiram que convergência para uma plataforma robusta para execução de aplicações.
WinCache
WinCache é uma aplicação que possibilita automatizar o gerenciamento de mudanças de código PHP em ambiente Windows. Este container de software tornou-se fundamental para o sucesso do PHP no Windows, já que, devido a grande quantidade de verificações realizadas pelo S.O. sobre arquivos fonte, retardavam consideravelmente tais operações (como compilação, por exemplo).
WinCache tem o poder de tornar a execução de páginas PHP consideravelmente mais rápidas em ambiente de produção. Aqui você pode visualizar o resultado de um teste realizado por Cal Evans (@calevans).
Usuários de Linux utilizam alguns mecanismos semelhantes, dentre os quais podemos citar: MemCache, APC, Opcode Cache, dentre outros.
PHP Manager
PHP Manager é um painel que permite gerenciar todas as ocorrências relacionada a framework PHP dentro do IIS. PHP Manager é gratuíto e pode ser habilitado no IIS como uma extensão do mesmo.
PHP Manager foi criado com o o objetivo de diminuir a complexidade de configuração dos elementos relacionados ao framework. Antes deste painel, toda a administração era realizada via console application.
Algumas das operações suportadas pelo PHP Manager: registro de PHP junto ao IIS, gerenciamento de execução de multiplas versões de PHP no mesmo ambiente, extração de informações detalhadas acerca do runtime do PHP, gerenciar diretivas de “php.ini”, dentre outras.
A Figura 2 apresenta um screenshot do PHP Manager em execução.
Figura 2: PHP Manager em execução
Microsoft Drivers para PHP
Históricamente, PHP e SQL Server não possuíam boa integração. Desenvolvedores PHP há alguns anos, encontravam sérias dificuldades para integrar aplicações na plataforma de dados da Microsoft. Poucos recursos encontravam-se disponíveis (dois exemplos eram ODBC e Free GDS).
Com a ampla gama de investimentos realizados pela Microsoft nos últimos anos na comunidade open source de forma geral (especialmente PHP), visando tornar o ambiente Windows o melhor e mais completo para estas aplicações, bons mecanismos de acesso a dados não poderiam ficar de fora. Assim, nos últimos anos, novos e funcionais recursos para acesso a dados foram disponibilizados para esta comunidade.
A partir da versão 2005 até a atual (2008 R2), SQL Server oferece suporte nativo para a integração de aplicações PHP. Se você já utilizou PHP com SQL Server, com certeza já ouviu falar em “Microsoft PHP Driver for SQL Server“. Na verdade, o fato que está implícito através desta nomenclatura é que, estão disponíveis algumas extensões PHP 5 que permitem a leitura e a escrita de dados em scripts PHP a partir da versão 2005 do SQL Server (em todas as versões, inclusive express e Azure). Basicamente são dois componentes, cujas linhas gerais encontram-se abaixo:
-
SQLSRV: é um provedor de acesso a dados. É uma excelente alternativa (otimizada em vários aspectos) em relação ao já tradicional e conhecido MSSQL. Um fato que deve estar explícito neste momento é o de que este driver foi criado e é mantido pela Microsoft. Esta característica é importante, pois faz menção ao esforço que a empresa tem dedicado na construção de ferramentas robustas para PHP. Outra característica importante é que, como SQLSRV é baseado no modelo ODBC, aplicações que o utilizam podem ter acesso a features excluivas nas versões mais recentes do SQL Server. Como MSSQL foi construído para acessar dados SQL Server em plataformas Linux, seu desempenho, compatibilidade e robustez não pode ser comparado em relação a SQLSRV. A biblioteca completa com descrição das features disponibilizadas por SQLSRV pode ser visualizada aqui.
-
PDO_SQLSRV: atua como um componente de conectividade com as demais versões do SQL Server (incluindo SQL Azure). Ao instalar o componente SQLSRV a interface PDO é automaticamente configurada.
Conclusões
Todos os recursos apresentados neste texto tem um único objetivo: confirmar o fato de que a Microsoft tem dedicado grande esforço para construir um ambiente saudável e robusto para a execução de aplicações PHP no Windows.
Mesmo a evolução da versão 5.2 para a versão 5.3 do PHP tenha apresentado melhorias consideráveis, a Microsoft não está satisfeita. Os investimentos em novos recursos de compatibilidade, desempenho e segurança para PHP no IIS não param, assim como a busca pela constante melhoria nos métodos de acesso a dados.
Assim, hoje é possível dizer que faz mais sentido utilizar a plataforma Windows para hospedar aplicações PHP do que outros ambientes. Porque? Segurança, desempenho e performance já são equiparáveis com Linux e, além disso, novas possibilidades que apenas a plataforma Windows pode oferecer a desenvolvedores de forma geral (como IDE’s para o desenvolvimento, por exemplo) se abrem.
Mas e o preço? Linux é bem mais barato! Faça uma pesquisa nos principais hosters brasileiros. Você verá que essa realidade se modificou drasticamente. Os preços são equiparáveis quando não são mais baixos.
Assim, podemos dizer hoje sem medo de errar: PHP, IIS e Windows Server – uma parceria de sucesso!
Facebook
Twitter
Instagram
LinkedIn
RSS