A evolução do PHP reflete o crescimento da internet e as exigências cada vez maiores de recursos, eficiência e produtividade. Saiba mais detalhes!
Existe um aspecto estratégico que interfere em todo o desenvolvimento tecnológico da internet: tudo custa dinheiro. Tudo mesmo, do uso de sistemas ao tempo em que uma determinada aplicação fica ociosa.
Assim, uma parte importante do desenvolvimento de software procura aumentar a eficiência e a produtividade dos sistemas para reduzir custos e melhorar os resultados das empresas. É assim, por exemplo, com o PHP.
Em sua apresentação no PHP Community Summit, evento realizado pela Locaweb com coparticipação do PHPSP, o desenvolvedor full Stack Vinicius Dias, instrutor na Alura e Zend Certified Engineer, mostrou como a evolução do PHP sempre esteve diretamente ligada a necessidades técnicas relacionadas ao aumento de performance dos sistemas.
“O PHP nasceu quando a complexidade na internet aumentou e a demora na devolução de requisições passou a ser considerada excessiva. Isso lá nos tempos em que ‘tudo era mato’ – e esse framework continua valendo até hoje”, comenta o especialista.
E como era no início?
Nos primórdios da internet, era usada a Common Gateway Interface (CGI), um programa em C ou C++ que recebia as requisições que chegavam ao servidor Web, fazia a execução e mandava a resposta para a saída, para ser devolvida para o usuário.
A cada nova requisição, um novo processo era criado, fazia o processamento e era encerrado. “Cada requisição incorria em todo o custo de inicializar recursos, alocar memória e fazer o processamento. No início, as perdas eram aceitáveis, mas conforme a internet ganhou popularidade, esse processo passou a representar perda de performance”, explica. Era preciso mudar.
A mudança veio com o nascimento do PHP, um conjunto de ferramentas para facilitar a visualização do conteúdo e fazer uma separação dos recursos. “O PHP nasceu como uma template engine para facilitar a visualização das informações, enquanto códigos em C faziam o processamento”, afirma Dias.
Crescendo para além de um conjunto de bibliotecas de visualização, o PHP se tornou uma linguagem de programação.
E então veio o Apache…
Por muito tempo, o Apache foi a única opção para trabalhar com PHP como linguagem de programação. “O Apache traz embutido um processador de PHP, fazendo com que, a cada nova requisição, não fosse necessário inicializar o PHP. Essa configuração diminuiu muito o custo de processamento. E como essa feature já vinha pronta, era só habilitar, facilitou muito a vida dos devs”, explica Dias.
Assim, uma organização com um servidor HTTP ganhou muito espaço no ambiente de desenvolvimento web e, como consequência, impulsionou o uso do PHP.
Mas nem sempre as novidades trazem somente lados positivos. A arquitetura oferecida pelo Apache fazia com que o servidor Web tivesse que lidar com processos adicionais.
“No início esse custo ainda era mais vantajoso do que fazer as coisas à moda antiga, mas, com o crescimento da internet, esse ponto passou a ser cada vez mais relevante”, analisa Dias.
A “antiga modernidade”
Em 2010, surgiu o PHP-FHM, um passo que representou um enorme avanço de performance para os servidores. “O PHP-FPM é inspirado no CGI original, com a diferença de que, a cada requisição, não ocorre o caminho de iniciar/processar/finalizar o processo”, conta o especialista.
Em vez disso, o processo é inicializado, recebe as requisições, envia para processamento e cria pools de processos que podem receber várias requisições. Assim como seus antecessores, o PHP-FHM encontrou uma forma de contornar ineficiências para gerar ganhos de produtividade e reduzir os custos de processamento.
Mas ainda era possível evoluir, uma vez que essa arquitetura respeita a internet como ela nasceu (totalmente independente) e não compartilha recursos, pois as requisições são independentes. Entre as desvantagens, está o fato de que a inicialização tem um custo que se torna cada vez mais relevante. Era possível evoluir. E a evolução veio.
A “nova modernidade”
Com o React PHP, surgiu o conceito de “event loop”, que evita a inicialização constante dos eventos. “O servidor Web em PHP passa a ser autocontido, deixando de precisar de Apache ou Nginx para receber requisições. Aqui, o próprio PHP recebe as requisições”, explica o especialista.
Isso permite que o PHP abra uma conexão, suba o framework e prepare todo o ambiente para trabalhar as requisições que virão.
“O React PHP viabiliza a comunicação em tempo real, o tratamento de requisições simultâneas e diversas operações de I/O em cada requisição – o que, mais uma vez, diminui a ociosidade dos servidores e promove um uso mais inteligente dos recursos”, analisa Dias.
O React PHP, em sua visão, foi uma grande revolução para o sistema, mas necessita de códigos específicos para tarefas do dia a dia, como acesso a bancos de dados.
“A tecnologia exige a mudança dos frameworks para I/O não bloqueante, o que é facilitado com o uso de extensões como o Swoole”, comenta. O resultado é um sistema um pouco menos amigável para iniciantes, mas com uma performance muito mais poderosa.
Expectativas para o futuro
Para Dias, o futuro pertence, cada vez mais, a aplicações que façam o código PHP que conhecemos funcionar de forma assíncrona. “É parte de uma evolução constante da tecnologia e que entrega cada vez mais performance”, afirma.
Ele, porém, faz um alerta importante: não incorpore a tecnologia pela tecnologia. “Nem todo mundo vai precisar de I/O não bloqueante. Por isso, vale sempre avaliar a necessidade do uso e adotar a melhor solução para cada caso, segundo a demanda do cliente”, completa.