KingHost
Canais iMasters

PHP

Estatísticas de uso do PHP

Alguns anos atrás, Damien Seguy começou a coletar informações sobre qual versão do PHP as pessoas estavam usando, e como é o uso do PHP comparado a tecnologias competitivas como o ASP.NET. Como gerente de lançamento do PHP 5.1 e 5.2, isso foi particularmente interessante para mim, porque as estatísticas mensais mostravam as tendências de adoção do PHP 5.2 e serviam como um bom medidor de quão rápido as pessoas estavam migrando. Eu também estava ativamente envolvido no desenvolvimento do FUDforum, e esses dados ajudaram a determinar em quais novos recursos do PHP eu podia confiar, e se versões antigas do PHP poderiam ser descontinuadas.

Infelizmente, em algum momento em 2008, o processo de coleta desses dados definhou, e a comunidade do PHP ficou sem eles. No final de 2010, depois de falar com o Damien, decidi recomeçar o processo e eventualmente expandir de 11 milhões de domínios para 120 milhões. Quero compartilhar alguns dos dados e das conclusões que podem ser tiradas do meu estudo inicial.

Antes de irmos direto para as estatísticas, vamos tirar um momento para revisar como nossos dados foram reunidos. O primeiro passo do processo foi criar uma ferramenta que fosse capaz de recolher os dados. Para manter as coisas simples, decidi usar pecl_http, porque ele permite a execução de vários pedidos paralelos, os quais eu precisava, de modo a fazer milhões de pedidos dentro de um timeframe razoável. Considerando que o teste estava sendo executado em um servidor potente, eu presumi que o gargalo era mais provável de estar baseado na rede, e escrever a ferramenta em C não iria gerar benefícios substanciais. Neste momento, o objetivo era conseguir um medidor para a velocidade da recuperação de dados para ver quão prático seria gerar estes dados mensalmente. 

Para minimizar o uso da bandwidth e para acelerar as coisas, eu uso pedidos HEAD com um timeout de 3 segundos. Eu decido arbitrariamente que, se um site não responde dentro de 3 segundos, então ele não vale a pena ser testado, porque eu certamente não esperaria mais de 3 segundos para uma página começar a carregar.

Meu primeiro teste - com 25 pedidos paralelos gerando 10 pedidos por segundo - foi muito lento para atingir meus objetivos. Ao aumentar o número de pedidos paralelos, a velocidade, surpreendentemente, não aumentou. Ao olhar para a utilização de rede da CPU, esta não demonstrou estar com nenhum problema; o carregamento era insignificante, e havia muito pouco tráfego na rede.

Um momento WTF (what the fuck): felizmente, o problema foi rapidamente identificado, apesar de me deixar um pouco desapontado com o libcurl, no qual o pecl_http se apoia. Enquanto o libcurl pode certamente processar um grande número de pedidos paralelos, quando o assunto é resolver o nome de um domínio para um endereço IP, o processo é, na verdade, seqüencial, e não paralelo. Surpreso? É, eu também fiquei. Então, como você resolve 12 milhões de domínios rapidamente? Bom, se formos acreditar em Ken Thompson, quando em dúvida, use força bruta, e por força bruta entenda-se C. E assim, resolv.c se tornou o resolvedor de um processo de 150 linhas. Ele varreu 12 milhões de domínios em apenas 30 horas, e durante o processo, fez o named usar cerca de 3.4 gigabytes de memória.

Depois de resolver, eu torci o código PHP original para fazer conexões diretas com os Ips e enviar um Host header contendo o domínio correspondente. Com isso acertado, faltava só determinar quantos pedidos iriam saturar o pipe de 10 MB. Este número mágico acabou sendo 400 pedidos paralelos, os quais mantiveram os pedidos em uma velocidade de 150 pedidos por segundo. Depois de mais um dia de operação, eu tinha 10.8 milhões de pedidos resolvidos e completados com sucesso dos 12.3 milhões iniciais de amostras de dados.

Para minimizar a sobrecarga durante o processamento dos pedidos, a análise dos dados foi mantida até o final. Se você está curioso acerca de quantos gigabytes são necessários para armazenar 10.8 milhões de headers, a resposta é por volta de 4.9. Para os meus objetivos, eu foquei em 3 headers: X-Powered-By,Server e Cookie.

Os resultados!

PHP 3998425 59%
ASP.NET 2294166 34%
Perl 259931 4%
Python 159475 2%
Java 18065 0%
Ruby 16539 0%

O gráfico acima mostra a repartição das 6 maiores linguagens identificáveis em 6.7 milhões de domínios onde a linguagem pôde ser determinada. Uma das coisas mais surpreendentes para mim foi a popularidade do ASP.NET. O próximo gráfico, que mostra a popularidade dos servidores web, irá explicar essa anomalia. 

Como você pode ver, a partir dos dados, praticamente todos (92%) os relatórios IIS estão sendo alimentados pelo ASP.NET, apesar de que muitos deles estão provavelmente servindo apenas como dado estatístico. Uma das razões é que parece não ser trivial remover informações das versões do IIS, o que é o motivo pelo qual a maioria das pessoas não o fazem. Apache, Lighttpd, e Nginx tornam isso trivial, de modo que esconder informações das versões parece ser uma prática bastante comum.

Por exemplo, 40% de todos os domínios servidos pelo Apache limitam a exposição de informação apenas ao nome do servidor. 52% dos usuários do Lighttpd escondem todos os dados extras das versões, e 29% dos usuários do Nginx seguem o mesmo padrão. De uma perspectiva estatística, isso é um pouco irritante, mas de uma perspectiva de segurança e minimização de transmissão de dados, esta é uma boa abordagem.

A repartição do PHP é bem positiva.

Como você pode ver, quase 80% de todas as instalações PHP migraram para o PHP 5, com a versão 5.2 sendo a mais popular delas. 22% usavam a 4.4 e a 4.3 (em dezembro/2010), mas esse ainda é um avanço massivo desde outubro de 2008 (as estatísticas mais recentes do Damien), quando o PHP 4 dominava com 52%. Claramente, existem ainda muitas melhorias a serem feitas no PHP 5.3, que conseguiu capturar apenas 4% em pouco mais de um ano. Assim, isso pode ser atribuído ao fato de que a maioria das distribuições de Linux somente agora começaram a anunciar o PHP 5.3 como estável. Portanto, eu suspeito que a fatia de mercado do 5.3 vai crescer dramaticamente em 2011.

Uma observação divertida: ainda existem 390 sites executando o PHP 3, e duas almas corajosas ainda usam o PHP 1.3. Um grupo ainda mais corajoso colocou as mãos na versão beta do PHP 6 (agora extinta) e estão executando 39 domínios nela. Para não ficar para trás, alguns viajaram para o futuro e colocaram as mãos nas versões 6.6 e 7.5 do PHP e ainda estão fazendo testes nelas. Ou então eles descobriram como mudar a string das versões.

No 5.2, o padrão de uso é bem interessante. Um pouco mais de um quarto dos usuários está com o último lançamento estável, outros 20% estão dentro das 3 versões do lançamento estável, e 23% estão usando o PHP 5.2.6, a primeira versão 5.2 que a maioria das distribuições enviaram como estável. Os 31% restantes estão uniformemente distribuídos entre todas as versões 5.2

No que diz respeito ao 5.3, os novos adeptos comandam. Como você pode ver a partir do gráfico, quase todo mundo está utilizando a última versão estável ou a última versão antes dela.


Tem mais

Como parte do processo de recolhimento de dados, muito mais informação foi capturada. Em outros artigos, eu estarei movendo dados puros para uma database em que você pode referenciar, então fique de olho no meu blog. Alguns dos dados vão incluir distribuições de Linux, velocidade de acesso, configuração de caractere, suporte de compressão, etc. Você pode se surpreender com quantos dados podem ser recolhidos somente de headers HTTP. E claro, ainda temos 110 milhões de domínios pela frente.

*

Texto original em inglês, de Ilia Alshanetsky, disponível em http://phpadvent.org/2010/usage-statistics-by-ilia-alshanetsky


Comente também

20 Comentários

Michell
Michell

Excelente matéria!
Parabéns!

lucas
lucas

show de bola

Marcus Sá
Marcus Sá

Parabéns

Lucas peperaio
Lucas peperaio

kkkkkkkkkkkk...php 7.5

Ricardo Schroeder
Ricardo Schroeder

Simplesmente fantástico, a grande utilização do ASP.NET também me surpreendeu, espero que caia drasticamente nas 110 milhões de coletas restantes.

M. França
M. França

Rs. Quero ver rodar essa mesma pesquisa nas 100+ da FORBES... E aí vamos ver se o PHP aparece em 1o lugar... rs. Acho que a análise não está isenta. Massssss é a apenas uma opinião.
De qualquer forma, parabéns pelo "trabalho".

to m. frança
to m. frança

vc queria asp.net em primeiro?

M. França
M. França

40% asp.net + 40% java (empate técnico do 1o lugar)
P.S. O mercado é quem quer... Pouco importa o que "eu" queria... rs.
=)

André
André

vou pegar sua mulher e dividir 50% pro ricardão e o restante pro paulão, deixa de ser mané contra fatos não há argumento, não é o autor que quis o resultado da pesquisa é a realidade por mais q vcs JAVISTAS (maioria nerd idiotas q gostam de RESTART) ou ASPistas (que gostam do tio bill) não aceitem PHP é a linguagem mais utilizada no MUNDO

Alexandre Jimenez
Alexandre Jimenez

outra coisa que estranhei foi a ausência do ASP antigo. Ainda tem muito site que usa

Bergh Nunes
Bergh Nunes

Poxa, pensei que a plataforma JAVA estivesse dominando o mercado, mais agora estou vendo que a linguagem PHP e suas tecnologias são muito poderosas.

Adorei a matéria e um detalhe, a plataforma ASP.NET, fique supreso com os números e também pela grande demanda de desenvolvedores.

André
André

VIVA O PHP DOMINAR O MUNDO

VIVA O CÓDIGO LIVRE

VIVA A MAIOR QUANTIDADE DE PROGRAMADOR EM PHP

Flávio
Flávio

Nas minhas veias correm PHP...

Henrique Prates da Silva
Henrique Prates da Silva

Nas minhas tb...

Pedro Amorim
Pedro Amorim

Quantos % destes sites sao sites serios? Humm sabe aquela frase da vovó: Quantidade nao é qualidade. Developers PHP, a sua briga nao é com a gente "JAVISTAS" como foi dito, e sim com o "sobrinhos programadores". E a posto que tem muitos aki q se enquandram nesse nivel. A cabem com os "sobrinhos" e teram respeito.

Acho uma bobagem essa discução. A melhor linguagem eh a que "paga" o meu salario.

Newerton Araújo
Newerton Araújo

Otimo artigo.
Eu uso arduamente PHP durante 6 anos, nada contra outras linguagem, foi como o Pedro Amorim disse, a melhor linguagem, e aquela que te sustenta financeiramente.

Mais eu ACHO que o .NET vai engolir o JAVA, a Oracle não se manifestou mais sobre novas versões do JAVA.

Daniel
Daniel

o Facebook roda em PHP o recompilaram do zero para ganhar performance.

Anselmo Gomes
Anselmo Gomes

Completamente OFF o que eu vou perguntar mas o que vocês usaram para gerar os gráficos que ilustram o artigo?

marcelo
marcelo

Excel, word, corel, powerpoint... qualquer um... off mesmo...

Danilo
Danilo

Pessoal independente de vocês programarem em java php phyton não importa a linguagem o que realmente importa é que o nosso pais esta se mostrando ligado em programação isso é muito bom!!!!

Qual a sua opinião?

Comentários considerados ofensivos serão moderados.
IBM

Parceiros

IBM
PagSeguro
Internet Innovation
Dialhost
HostNet
Tecla
KingHost
DotStore
Dinamize