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: 115.994 ]

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

Montando um Debian Etch - Para técnicos

Instalando o Debian Etch com o instalador gráfico

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

Instalando o Ultra Servidor no Debian Lenny

Instalando o novo Anjuta 2.2.0 no Ubuntu Feisty

Leitura recomendada

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

Vulpes - Gerenciamento de acesso para gateways / proxies no Linux

Verificando integridade de servidores POP com PHP/sockets

Asterisk - Monitorando ligações gravadas através de página em PHP

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

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts