Aldeia Numaboa
Um portal diferente em Português do Brasil
Informática da Aldeia

Tutoriais
Home Informática Tutoriais Webmaster Medindo a largura de banda *

Na Aldeia

Há 102 visitantes online

2796 registros
0 hoje
6 nesta semana
4 neste mês

Boas vindas: delilah

Estatística

Artigos: 847
Artigos lidos: 3918742
Arquivados: 41
Downloads: 416
Baixados: 161778
Glossário: 1198
Bibliografia: 24
JoomlaWatch Stats 1.2.7 by Matej Koval

Visitas de onde?

88,3%Brasil Brasil
9,2%Portugal Portugal
0,8%EUA EUA
0,2%Espanha Espanha
0,1%Alemanha Alemanha

Visitantes

Hoje: 409
Ontem: 1940
Esta semana: 2349
Semana passada: 12942
Este mês: 2349
Mês passado: 52379
Total: 123634

Registro/Login

Para fazer login ou registrar-se

Usuários registrados têm algumas regalias!

Sáb

11

Nov

2006


22:29

Medindo a largura de banda * PDF Imprimir Indique esta página
Avaliação: / 30
PiorMelhor 
Tutoriais - Webmaster
Escrito por vovó Vicki   


Índice do Artigo
Medindo a largura de banda *
Página de Resultado
Todas as páginas

Nível avançado Medir a velocidade de conexão é interessante tanto para usuários quanto para provedores de serviço e webmasters. Além disso, também é interessante explorar alguns aspectos menos usuais da programação web. Este tutorial mostra como medir a largura de banda de uma conexão usando PHP e JavaScript, uma associação muito prática e eficiente. Os testes são efetuados tanto para as conexões discadas quanto para as de banda larga.

O autor do texto que serve de base para este tutorial informa que também se baseou num código ASP fornecido por um usuário da inet-access mailing list e que desconhece sua origem.

Neste tutorial, o código descrito é apresentado nas áreas claras. A numeração 1..., 2..., 3... NÃO faz parte do código e está destacada em vermelho. Serve apenas para associar o trecho do código ao texto explicativo.

Entendendo o projeto

O projeto é constituído por uma página HTML, na qual são inseridas rotinas em PHP que fazem a leitura de um arquivo qualquer. A velocidade de leitura é obtida através do cálculo do número de bytes lidos num determinado intervalo de tempo. Os valores obtidos são usados para se chamar uma segunda página HTML que apresenta os resultados.

Resumindo: o projeto é composto por um arquivo de leitura e duas páginas HTML + PHP + JavaScript.

O arquivo de leitura

O arquivo de leitura precisa ser relativamente grande para permitir a leitura de uma grande quantidade de bytes num tempo significativo que facilite os cálculos (é mais fácil lidar com 10 do que com 0,0000000001). O conteúdo do arquivo não será processado, portanto, é irrelevante. No nosso exemplo, o arquivo possui cerca de 3.8 Mega.

A página de leitura

A página de leitura possui a estrutura clássica de uma página HTML com <html><head></head><body></body></html>. Após o texto habitual de identificação do assunto da página, inserimos um pequeno script JavaScript para obtermos a hora e armazenamos o resultado na variável horaIni:

<script>
<!--
   hora    = new Date();
   horaIni = hora.getTime();
// -->
</script>

Logo a seguir começa o código PHP responsável pela leitura do arquivo que denominaremos teste.bin. O manipulador de arquivo $fd abre o arquivo apenas para leitura (r), forçando uma leitura binária (b). Depois disto, o conteúdo binário do arquivo obtido através da leitura de 512 * 1024 bits com fread é armazenado na variável $conteudo. O número de bits lidos foi fixado em 512 * 1024 apenas para garantir um número significativo de bits. Terminada a leitura, o conteúdo lido é transferido para a página numa área invisível (delimitada por <!-- e -->) para determinar o tempo de escrita. Terminado o processo, fecha-se o manipulador com fclose.

<?php
   $fd = fopen ("teste.bin, "rb");
   $conteudo = fread ($fd, 512 * 1024);
   echo "<!-- $conteudo -->";
   fclose ($fd);
?>

1... Depois disto usamos um novo JavaScript, este um pouco mais elaborado. Obtemos novamente a hora, armazenamos o resultado na variável horaFim e comparamos as horas inicial e final. Caso sejam iguais, o tempo de leitura (ou download de bits do arquivo teste.bin) foi zero; caso sejam diferentes, o tempo de download corresponde à diferença dos dois horários em segundos, que será dividido por 1000 para serem expresso em milissegundos. Qualquer que seja o resultado, ele é armazenado na variável tempoDown.

2... Tendo o tempo de leitura, dividimos o volume de dados pelo tempo gasto e armazenamos o resultado na variável velocidade. A seguir, transformamos os bytes por segundo em kilo bits por segundo ou kbps: arrendondamos a multiplicação da velocidade por 8 (cada byte possui 8 bits) e por 1024 para transformá-la em kilo (no sistema binário kilo corresponde a 210 e 2 elevado a 10 é igual a 1024). A multiplicação e posterior divisão por 10 se anulam. Isto é utilizado apenas para se obter uma casa decimal no resultado final.

3... Com estes dados é possível calcular a velocidade de transmissão de acordo com a largura de banda disponível. Este cálculo será realizado na segunda página do projeto. A página de resultado, também em PHP (resultado.php), espera alguns parâmetros. Para isto compomos uma string, proxPage, que contenha a chamada de resultado.php seguida das variáveis e seus valores: "resultado.php?kbps=" + kbps + "&tempo=" + tempoDown + "&KB=" + kbytes_de_dados. Esta string será o valor passado para document.location.href, que acionará a leitura de resultado.php.

        <script>
	<!--
1...	   hora          = new Date();
	   horaFim       = hora.getTime();
	   if (horaFim == horaIni)
	      {tempoDown = 0}
	   else
	      {tempoDown = (horaFim - horaIni)/1000;}

	   kbytes_de_dados = 512 * 1024;
2...	   velocidade      = kbytes_de_dados/tempoDown;
	   kbps            = (Math.round((velocidade*8)*10*1.024))/10;

3...	   proxPage = "resultado.php?kbps=" + kbps +
	              "&tempo=" + tempoDown + "&KB=" + kbytes_de_dados;
	   document.location.href=proxPage
	// -->
	</script>


Última atualização ( Sáb, 12.04.2008 23:00 )
 

Topo

Topo