Informática Numaboa - Tutoriais e Programação
Medindo a largura de banda *
Sab 11 Nov 2006 22:29 |
- Detalhes
- Categoria: Webmaster
- Atualização: Quarta, 21 Janeiro 2009 22:01
- Autor: vovó Vicki
- Acessos: 16307
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.
- << Anterior
- Próximo