A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Medindo a largura de banda *

Sab

11

Nov

2006


22:29

(33 votos, média 4.88 de 5) 


A página de resultado

A página de resultado também 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, já começamos alguns cálculos.

4... A variável $kbps é inicializada com o valor kbps enviado como parâmetro através do método "GET" fazendo-se a leitura do elemento 'kbps' do array $_GET. Com isto temos os kilobits por segundo, lidos na página anterior, arredondados com duas casas decimais.

Os cálculos seguintes apenas transformam as unidades. $ksec corresponde ao número de kilobytes lidos (1 byte = 8 bits), $mbps corresponde ao número de megabits lidos (1 megabit = 1024 bits) e $msec corresponde ao número de megabytes lidos (1 byte = 8 bits).

5... Se o número de megabits lidos for maior do que 1, formatamos o valor como número flutuante de duas casas decimais e o imprimimos com printf ("%.2f",$mbps); seguido de mais uma saída para a tela de echo " Mbps<br><br>;" para especificar a grandeza. Se o número de megabits for menor do que 1, procede-se da mesma maneira com o valor dos kilobits.

6... Depois de apresentar o total de kilo ou megabits lidos, mostramos o volume lido por segundo. Usando echo, se $msec for maior do que 1, mostramos o valor dos megabytes por segundo; se não, mostramos o valor dos kilobytes por segundo.

	<php?
4...	   $kbps = round($_GET['kbps'], 2);
	   $ksec = round($kbps / 8, 2);
	   $mbps = round($kbps / 1024, 2);
	   $msec = round($mbps / 8, 2);

5...	   if ($mbps > 1) {
	      printf ("%.2f",$mbps); 	
	      echo " Mbps<br><br>";
	   } else {
	      printf ("%.2f",$kbps); 	
	      echo "kbps<br><br>";
	   }

6...	   if ($msec > 1) {
	      echo " significando downloads a " . $msec .
	           " MB/seg. do meu servidor.";
	   } else {
	      echo " significando downloads a " . $ksec .
	           " KB/seg. do meu servidor.";
	   }
	?>

7... A seguir, montamos uma tabela comparativa. Neste ponto, o PHP será responsável não só pelos cálculos como ainda pelo código HTML. Em HTML puro delimitamos a área da tabela com <table> e </table>. O miolo da tabela, ou seja, os <tr> e os <td>, serão gerados através do PHP. O código HTML gerado pelo PHP está destacado em azul.

8... Inicialmente criamos um array cujos elementos recebem uma chave com os valores das velocidades nominais. A cada um destes elementos nominados atribui-se um sub-array que contém dois elementos nominados (chaves "nome" e "imagem") e seus respectivos valores. O primeiro elemento do array, nominado "28.8", possui um sub-array com o elemento "nome", cujo valor é "dial-up", e o elemento "imagem", cujo valor é "1.gif". Este array, chamado de $serviços, será utilizado para gerar o gráfico de velocidades dentro da tabela.

9... Para manter as proporções das barras dos gráficos de acordo com os valores que serão apresentados, é preciso determinar a escala das barras. Comparamos o maior valor do array com o valor obtido e, de acordo com o resultado, armazenamos o valor da escala na variável $escala_barra.

10... A partir daí é só ir jogando os valores nas colunas da tabela de acordo com o array $serviços. É óbvio que neste array não consta o valor do teste de conexão. Este precisa ser comparado com os valores padrão estabelecidos no array e ser inserido no local correto. Para ir percorrendo o array, fazemos uso de um loop foreach, no qual extraímos cada chave com array_keys($servicos) e atribuímos este valor à variável $servico.

A cada passo do loop foreach, passamos os valores do nome e da imagem correspondente para as variáveis $nome e $imagem. Além disso, de acordo com $servico, calculamos o comprimento da barra correspondente e armazenamos o valor na variável $tam_barra. Assim, no primeiro passo, quando $servico="28.8", obtemos $nome="dial-up", $imagem="1.gif" e $tam_barra=7,6896. Quando $servico="384", temos $nome="DSL", $imagem="3.gif" e $tam_barra=102,528... e assim sucessivamente.

11... Só precisamos controlar quando devemos inserir o valor calculado para o usuário. Digamos que o valor encontrado seja 287. Neste caso, quando $servico=384, temos a primeira ocorrência de um valor maior que o calculado. Isto pode ser testado através da diretiva condicional if ($servico > $kbps). Acontece que todos os passos posteriores terão valores armazenados em $servico que também serão maiores que o calculado. Para imprimir o valor do usuário apenas uma vez (e não 4 vezes), fazemos uso de uma variável adicional que nos indicará se o valor do usuário já foi impresso: a variável $a_sua. Como a variável foi declarada diretamente na diretiva if e nenhum valor lhe foi atribuído, ela automaticamente recebe o valor FALSE e, enquanto for falsa, nos indica que o valor do usuário ainda não foi apresentado.

A diretiva if completa passa então a ser if (($servico > $kbps) && $a_sua == False) que, traduzido, é "se $servico for maior que $kbps E $a_sua for falso". Se esta condição for preenchida, antes de jogar para a tela os valores do array, imprimimos o valor calculado para o usuário com vários echo e, no final, passamos a variável $a_sua para verdadeiro. No próximo passo do loop, apesar de $servico > $kbps, o valor do usuário não será impresso novamente.

12... A cada passo do loop, independentemente do valor calculado para o ussário, imprimimos a barra correspondente do serviço. Além disso, terminamos a área PHP e fechamos a tag da tabela com </table>.

7...	<table>

	<?php

8...	$servicos = array(
	   "28.8" =>  array ( "nome" => "dial-up", "imagem" => "1.gif" ),
	   "33.6" =>  array ( "nome" => "dial-up", "imagem" => "1.gif" ),
	   "53.3" =>  array ( "nome" => "dial-up", "imagem" => "1.gif" ),
	   "56" =>    array ( "nome" => "ISDN", "imagem" => "2.gif" ),
	   "128"  =>  array ( "nome" => "ISDN", "imagem" => "2.gif" ),
	   "384"  =>  array ( "nome" => "DSL", "imagem" => "3.gif" ),
	   "768"  =>  array ( "nome" => "DSL", "imagem" => "3.gif" ),
	   "1000"  => array ( "nome" => "DSL", "imagem" => "4.gif" ),
	   "1500"  => array ( "nome" => "DSL/T1/Cable Modem", "imagem" => "5.gif" )
	);

9...	if ($kbps > 1500) {
	   $escala_barra = 400/$kbps;
	} else {
	   $escala_barra = 0.267;
	}

10...	foreach(array_keys($servicos) as $servico) {

	   $nome = $servicos[$servico]["nome"];
	   $imagem = $servicos[$servico]["imagem"];
	   $tam_barra = $servico * $escala_barra;

11...	   if (($servico > $kbps) && $a_sua == False) {
	      $tam_barra = $kbps * $escala_barra;
	      $alt_sua_barra = $alt_barra + 5;
	      echo "<tr>\n";
	      echo "<td align=left><b>$kbps kbps</b></td>\n";
	      echo "<td align=center><b>VOCÊ</b></td>\n";
	      echo "<td align=left><img src=$graf_usuario
	            height=$alt_barra width=$tam_barra></td>"; 
	      echo "</tr>\n";
	      $a_sua = True;
	   }

12...	   echo "<tr>\n";
	   echo "<td align=left>$servico kbps</td>\n";
	   echo "<td align=center>$nome</td>\n";
	   echo "<td align=left><img src=$imagem height=$alt_barra
		width=$tam_barra></td>"; 
	   echo "</tr>\n";
	}

	if ($a_sua == False) {
	   $tam_barra = $kbps * $escala_barra;
	   $alt_sua_barra = $alt_barra + 5;
	   echo "<tr>\n";
	   echo "<td align=left><b>$kbps kbps</b></td>\n";
	   echo "<td align=center><b>VOCÊ</b></td>\n";
	   echo "<td align=left><img src=$graf_usuario
	        height=$alt_sua_barra width=$tam_barra></td>"; 
	   echo "</tr>\n";
	}

	?>

	</table>


Medidor de Largura de Banda da Aldeia

Se você quiser fazer um teste, use o Medidor de Largura de Banda da Aldeia.

Fonte

Copyright 2002 (C) Gambit Design Internet Services (Licença Pública GNU)

Autor: Derek T. Del Conte - derek arroba gambitdesign ponto com

Este texto foi baseado na fonte acima. Veja a versão original em Bandwidthmeter, onde também é possível fazer o download da versão mais atualizada.

mfx brokernikas харьковлобановский александр интервью биолмужская косметичкакупить сантехнику +в москве недорого полигон

Informações adicionais