Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RSS iMasters

Estatísticas de uso do PHP

Recommended Posts

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!

35209.png

 

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. 

 

35211.png

 

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.

 

35210.png

 

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.

 

35208.png

 

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.

 

35207.png

 

 

 

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

 

 

hospedagem2-300x250.jpg

 

http://imasters.com.br/artigo/20396/php/estatisticas-de-uso-do-php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Excelente artigo, mas não entendi sua colocação Daniel

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.