Montando um velocímetro de internet com PHP e GD

Neste artigo veremos os passos necessários para a criação de uma página de teste de desempenho/velocidade de sua conexão com a internet utilizando PHP, GD, HTML e javascript.

[ Hits: 120.989 ]

Por: Kemper Alves em 04/07/2007


Entendendo o Funcionamento



A idéia principal para uma página de teste de desempenho é:
  1. Armazenar a data e hora atual;
  2. Enviar uma quantidade X de bytes para o computador do usuário;
  3. Armazenar a data e hora em que foi concluída;
  4. Dividir a quantidade de bits pelo tempo gasto em segundos.

Preste muita atenção nisso, velocidade de conexão é medida em b/s, ou seja, bits por segundo, e possui as variações Kb/s, Mb/s, Gb/s, etc. Note que o b é minúsculo, essa é a diferença!

1KB/s = 8Kb/s (1 Kilobyte por segundo é igual a 8 Kilobits por segundo)
128Kb/s = 16KB/s (128 Kilobits por segundo é igual a 16 Kilobytes por segundo).

Outra coisa que deve ser estabelecida desde já:

1KB = 1024 bytes
1Kb = 1000 bits

Bom, então a fórmula para determinar a velocidade da conexão, seria algo como:

velocidade = (bytes * 8) / (horafinal - horainicial)

Onde:
  • velocidade = velocidade da conexão em bits por segundo
  • bytes = quantidade de dados transferidos
  • horainicial = hora em que foi iniciada a transferência
  • horafinal = hora em que a transferência terminou.

No final, você ira obter o seguinte resultado:



    Próxima página

Páginas do artigo
   1. Entendendo o Funcionamento
   2. O que é necessário
   3. A página desempenho.php
   4. O script grafico_desempenho.php
   5. Publicando
Outros artigos deste autor

Instalando o Debian Etch com o instalador gráfico

Instalando o novo Anjuta 2.2.0 no Ubuntu Feisty

Montando um sistema Helpdesk com servidor Linux e Java em um ambiente corporativo ou na Internet

Backup fácil de seus arquivos com o Backintime

Instalando o Ultra Servidor no Debian Lenny

Leitura recomendada

Consultando servidores SNMP com PHP

Verificando integridade de servidores POP com PHP/sockets

Script PHP/MySQL - Controle de Máquinas via MAC Address no IPtables

Criando um painel de rede em PHP

Monitoramento de banda em TEMPO REAL com gráfico utilizando BWBAR + PHPLOT

  
Comentários
[1] Comentário enviado por pankdo em 04/07/2007 - 10:36h

bom artigo gostei muito
mas estou tendo um probleminha
nao estou conseguindo gerar a imagem
o q q eu posso fazer

[2] Comentário enviado por m4rc310 em 04/07/2007 - 10:41h

Muito bom, gostei.
Entretando a velocidade medida será específica para o meio entre seu servidor e sua máquina fazendo download certo? Você estará medindo a velocidade da sua rede em questão.

Eu só conheço o www.numion.com/yourspeed para testar a as velocidades escolhendo países. Porém o teste é só pra navegação e não para grandes downloads.

Alguém conhece uma solução melhor e mais genérica?

[3] Comentário enviado por kemperacc em 05/07/2007 - 00:23h

pankdao_dj:

Qual erro esta acontecendo?

No chute, pode ser que o GD nao estah instalado no seu servidor.

Outra coisa, me passa a url depois de pronto pra eu ver...

[4] Comentário enviado por kemperacc em 05/07/2007 - 00:25h

marcelonovol:

Exatamente, a velocidade eh medida entre o meu servidor Web e o Meu cliente, visto que eu sou um provedor de internet, este teste atende totalmente as minhas necessidades.

[5] Comentário enviado por shocker em 05/07/2007 - 09:22h

Bem bacana mesmo! Parabéns! =)

[6] Comentário enviado por removido em 05/07/2007 - 23:07h

Boa noite. Estou testando o script em minha maquina mas a conexao não esta sendo medida de forma correta. Quando visualizo os logs em /var/log/apache/error_log ele me retorna a seguinte menssagem:

[Thu Jul 5 22:59:25 2007] [error] PHP Notice: Undefined variable: velocidade in /var/www/htdocs/grafico_desempenho.php on line 47
[Thu Jul 5 22:59:25 2007] [error] PHP Notice: Undefined variable: velocidade in /var/www/htdocs/grafico_desempenho.php on line 13

Voce tem alguma ideia?
http://shamira.no-ip.org:8082/desempenho.php

[7] Comentário enviado por kemperacc em 06/07/2007 - 09:21h

OK, o script desempenho.php nao esta recebendo a variavel velocidade, tente fazer o seguinte:

1) Abra o arquivo de configuracao do php, no debian eh:

/etc/phpX/apace/php.ini (X eh a versao do php)

2) Localize a linha:

register_globals = Off

3) mude para On

register_globals = On

4) Reinicie o apache.

OBS - Mudar o register_globals para On eh uma potencial falha de seguranca, ha uma outra forma de passar a variavel, vou pesquisar e posto aqui.


[8] Comentário enviado por alexandrecorrea em 06/07/2007 - 11:13h

ativar o register_globals pode ser 'fatal' em alguns casos.. pois todas as variaveis se tornam globais..

para resolver este problema... basta editar o grafico_desempenho.php e mudar a linha

$velo=$velocidade;

para

$velo=$_GET['velocidade'];

:)

[9] Comentário enviado por edusierra em 07/07/2007 - 16:44h

Pessoal.... alguém conhece um esquema para teste de upload?

[10] Comentário enviado por kemperacc em 10/07/2007 - 14:02h

oi alexandrecorrea,

Obrigado pela correcao, este script era antigo meu e eu deixei passar batido.

[]s

Kemper

[11] Comentário enviado por marceloespindola em 11/07/2007 - 17:38h

Pessoal eu montei um desses medidor, mas em flash muito mais fácil de construir justamente por está pronto para mais detalhes visite o site no seguinte link: http://marcelolinux.blogspot.com/2007/07/tenha-seu-prprio-velocmetro-em-flash.html

A vantagem dele como sempre do flash é possui a facilidade enorme de instalar e colocar para funcionar em qualquer sistema operacional e com a compatibilidade em praticamente qualquer navegador, bastando apenas copiar os arquivos em flash para qualquer pasta acessível pelo servidor web.

[12] Comentário enviado por iandecy em 30/07/2007 - 22:23h

como faço para instalar isso no meu servidor ? para poder testar a minha propria conexao ?

quem souber me ajuda por favor.

[13] Comentário enviado por comfaa em 28/10/2008 - 13:01h

muito legal !!!

[14] Comentário enviado por paulocamboim em 09/02/2009 - 18:43h

Muito bom!
Parabens!

[15] Comentário enviado por Byfred em 12/09/2009 - 01:00h

Muito bom o script, mas com um pequeno problema,

o Internet Explorer primeiro está carregando todos os dados para depois exibi-los, ou seja, o tempo de "start" e "stop" está praticamente o mesmo, isso está fazendo o resultado ficar absurdamente grande, ou algumas vezes aparece "infinity",

Com Firefox e Chorme funcionou perfeitamente...
Aqui está o site para teste:

http://www.testesuanet.com

Alguem tem a solução ?

[16] Comentário enviado por kilson em 23/02/2010 - 17:24h

Muito bom artigo. Ótimo script.
Parabéns! E obrigado por publicar.

[17] Comentário enviado por removido em 23/02/2010 - 18:33h

Muito bom..Teria como colocar para o grafico ser exibido em um pop-up ? ficaria legal.

[18] Comentário enviado por tarcisiowill em 22/09/2010 - 17:35h

O teste tá retornando com a velocidade 0 KBs, pq? O que tá errado?

[19] Comentário enviado por andreontherock em 11/02/2011 - 01:18h

no meu diz que a imagem não pode ser exibida, deve ter algum erro

[20] Comentário enviado por kemperacc em 11/02/2011 - 07:21h

Sim, provavelmente o GD não está instalado.

[21] Comentário enviado por luancfalquetto em 30/05/2011 - 15:15h

apesar de o tópico estar parado a um tempo...
existe alguma forma de usar um arquivo com tamanho maior? tipo uns 3MB?

[22] Comentário enviado por kemperacc em 30/05/2011 - 16:07h

Sim, altere no arquivo desempenho.php a linha:

$tamanho=256;

para o tamanho que voce quiser, exemplo:

$tamanho = 30192;

[23] Comentário enviado por lndr.simon em 11/04/2012 - 09:05h

mt bom. salvando para usar futuramente


Contribuir com comentário