PHP

Estatísticas de uso do PHP

PorRedação iMasters em

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

Deixe um comentário! 26

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentando como Anônimo

  1. 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.

  2. 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”.

    1. 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

    2. Gente vocês brigam por besteira trabalho com .Net faz uns 8 anos, e no ultimo ano comecei a mexer mais com PHP, a grande desigualdade de uso se da pelo fato de quase todos os site institucionais serem feitos em PHP até pelo fato de custo, hoje desenvolver em .Net ou Java e bem mais caro tanto mão de obra quanto hospedagem, e não tenho duvidas para esse tipo de site o PHP leva uma grande vantagens em cima de Java e .Net, porem para sistemas de maior porte com certeza todos iram utilizar Java ou .Net, por melhor aproveitamento de framework, agilidade no desenvolvimento e melhor uso de OOP.
      Mas o post surpreende com o .Net em 2º lugar..

  3. 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.

  4. 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.

  5. 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.

  6. 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!!!!

  7. A popularização do PHP cresce muito na minha região, só no Instituto Federal de Tecnologia do Sul de Minas são mais de 100 alunos estudando. É a valorização de uma linguagem muito boa e livre.

  8. É fácil criar conclusões errôneas a partir de estatísticas, mas a novidade estas estatísticas é a posição de ASP.NET.

    Outras estatísticas, focadas to TOP 10.000, TOP 100.000 E TOP 1.000.000 podem ser vistas nos links abaixo:

    http://trends.builtwith.com/cms
    http://trends.builtwith.com/frameworks
    http://trends.builtwith.com/topsites/J2EE
    http://trends.builtwith.com/topsites/PHP
    http://trends.builtwith.com/topsites/ASP.NET
    http://trends.builtwith.com/topsites/Python
    http://trends.builtwith.com/shop

    É bom lembrar que estas estatísticas são feitas a partir de decisões tomadas há ano atraz.

  9. Não sei se vocês repararam, mas o autor original da pesquisa (http://phpadvent.org/2010/usage-statistics-by-ilia-alshanetsky) tem um domínio que roda Engine-X como servidor de http. Basta dar um [ telnet http://phpadvent.org 80 ], aguardar uns segundos e dar um [ get ] e depois o [ enter ]. Vale a pena pesquisar este servidor Engine-X em [ http://wiki.nginx.org/ ].
    Quanto a linguagens, seu uso é ditado por razões econômicas: economia de treinamento, economia de licença, economia de tempo, disponibilidade de servidores já preparados nos provedores…
    A melhor linguagem é aquela que a gente domína, pessoal…

leia mais