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

Por: Kemper Alves em 04/07/2007


O script grafico_desempenho.php



Este script tem por objetivo simplesmente receber as informações da página desempenho.php e gerar um gráfico PNG com os dados do resultado.

Note que a escala varia de acordo com o resultado.

ARQUIVO: grafico_desempenho.php

<?
/*
   ESTE ARQUIVO GERA UM GRÁFICO UTILIZANDO GD PARA A PÁGINA
   DESEMPENHO.PHP

   AUTOR: KEMPER ALVES DE CASTRO CARLOS <kemper@omegacodigos.com.br>

   LICENÇA: GNU/GPL

*/


$prefixo="Kb/s";
$velo=$velocidade;
$sufixo="Discada = ";

if ($velo>8192)
{
   $scala=8192*2;
   $ref=1024;
   $sufixo="ADSL 1Mb = ";
}
if ($velo<=8192)
{
   $scala=8192;
   $ref=1024;
   $sufixo="ADSL 1Mb = ";
}
if ($velo<=1024)
{
   $scala=1024;
   $ref=512;
   $sufixo="ADSL 512 = ";
}
if ($velo<=512)
{
   $scala=512;
   $ref=128;
   $sufixo="ADSL 128 = ";
}
if ($velo<=256)
{
   $scala=256;
   $sufixo="Discada = ";
   $ref=56;
}

if ($velocidade>=1024)
{
   $velocidade=$velocidade/1024;
   $prefixo="Mb/s";
}

if ($ref>1024)
{
   $ref=number_format($ref/1024, 0, ",", ".");
   $sufixo="ADSL 1Mb = ";
}
else
{
   $prefixoref="Kb/s";
}

$im=imagecreate(300, 300);
imagecolorallocate($im, 255, 255, 255);

$line_color=imagecolorallocate($im, 0, 40, 110);
$text_color=imagecolorallocate($im, 0, 40, 160);
$bar_color=imagecolorallocate($im, 0, 255, 0);
$grid_color=imagecolorallocate($im, 240, 240, 240);

for ($i=10; $i<$scala; $i+=$scala/100)
{
   imageline($im, ((290/$scala)*$i)+10, 30, ((290/$scala)*$i)+10, 290, $grid_color);
}

imagestring($im, 5, 70, 1, "Teste de Desempenho", $text_color);
imagestring($im, 2, 12, 16, "Teste efetuado em: ".date("d/m/Y g:i:s"), $text_color);
barra(2, $im, $bar_color, "$sufixo$ref$prefixoref", $ref, $scala);
barra(1, $im, $bar_color, "Sua conexão: ".number_format($velo, 0, ",", ".").$prefixo, $velo, $scala);

imageline($im, 10, 20, 10, 290, $line_color);
imageline($im, 10, 290, 290, 290, $line_color);

header("Content-type: image/png");
imagepng($im);

function barra($local, $im, $cor, $texto, $speed, $escala)
{
   if ($local==1)
   {
      $y1=50;
   }
   else
   {
      $y1=150;
   }
  
   imagefilledrectangle($im, 10, $y1, (290/$escala*$speed), $y1+70, $cor);
   imagestring($im, 3, 11, $y1-12, $texto, imagecolorallocate($im,0,0,0));
}
?>

EOF!

Download: grafico_desempenho.txt

Página anterior     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 Ultra Servidor no Debian Lenny

Backup fácil de seus arquivos com o Backintime

Instalando o novo Anjuta 2.2.0 no Ubuntu Feisty

Montando um Debian Etch - Para técnicos

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

Leitura recomendada

Criando um painel de rede em PHP

Verificando integridade de servidores POP com PHP/sockets

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

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

Alterando quotas via PHP (navegador)

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts