Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jeandias

Velocimetro, Como Funciona?

Recommended Posts

Nao sei se aqui (nesta seção do forum)é o melhor lugar para postar essa duvida, mas alguem saberia me explicar como funciona esses sites que calculao a velocidade de sua conexao. Estou começando a programar PHP agora e conheço pouca coisa.

 

olhem o exemplo a seguir:

 

 

 

http://www.rjnet.com.br/2velocimetro.php

 

como e feito esse calculo?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teste de velocidade de conexão à Internet

Como obter um reflexo aproximado da conexão à internet, medida em Kbps.

 

 

Estudando rapidamente os sistemas que obtém um reflexo aproximado da conexão à Internet, medida em Kbps; resolvi realizar algo similar em Php.

 

Qual é a utilidade?

 

Pode-se determinar em quanto tempo aproximado se baixa um arquivo da Internet.

Por exemplo, se estivermos elaborando uma página de downloads e quisermos mostrar ao usuário em quanto tempo APROX, estará esse arquivo em seu PC.

 

Na verdade é algo extremamente simples, já veremos mais adiante porquê.

 

Teoria Básica

 

É importante ressaltar que um caractere QUALQUER sempre terá um tamanho de 1 Byte, ou seja, 8 impulsos eletrônicos (8 Bit) , pelo qual uma cadeia de texto que contenha mil e vinte e quatro caracteres no total, terá uma dimensão de 1024 Bytes o que seria igual a 1 KB.

 

1 KB é igual a 1024 Bytes

1 MB é igual a 1024 KB

1 GB é igual a 1024 MB

1 TB é igual a 1024 GB

 

O código fonte:

arquivo : test.php

<? set_time_limit(0); $tempo_micro[1]= microtime(); $q_espacos = explode(" ",$tempo_micro[1]); $tempo_[1]= $q_espacos[1]+$q_espacos[0]; $conteudo=file_get_contents('http://localhost/carregar_bytes.php'); /* mudar por path real (URL) http://seudominio/carregar_bytes.php)*/ $tamanho_KB= strlen($conteudo)/1024; $tempo_micro[2] = microtime(); $q_espacos= explode(" ",$tempo_micro[2]); $tempo_[2] =$q_espacos[1] + $q_espacos[0]; $tempo_utilizado = number_format(($tempo_[2] - $tempo_[1]),3, "." ,","); $velocidade= round($tamanho_KB/$tempo_utilizado,2); echo 'Sua velocidade de conexão é de: '.$velocidade.' Kbps <br> Foram enviados:'.$tamanho_KB. ' Kb, Tempo utilizado: '.$tempo_utilizado.' Segundos <hr>'; for ($i=10; $i>=1; $i--){ $val_Kb=$i*100; if($velocidade>=800)$velocidade_=800; else $velocidade_=$velocidade/2; if($velocidade>=$val_Kb && !$col){ echo '<div style="background-color:#F0F0F0; width:500px; float:left"><img width="'.($velocidade_).'" height="8" style="background-color: #FF0000" border="0"></div><strong>Sua conexão</strong><br>'; $col=true; } echo '<div style="background-color:#F0F0F0; width:500px; float:left"><img width="'.($val_Kb/2).'" height="8" style="background-color: #000099" border="0"></div>'.$val_Kb.' Kbps<br>'; } ?>

arquivo : carregar_bytes.php

<? print str_repeat("i",1024000); ?>

Explicando:

 

Criamos o arquivo carregar_bytes.php, que conterá unicamente um processo aleatório de repetições até alcançar o valor de 1024000, 1000 KB, utilizando a função str_repeat(); que funciona como algo parecido a um loop. Repetirá 1024000, a letra i

 

Chamaremos o arquivo test.php,

 

Primeiro, utilizaremos a função set_time_limit(), para indicar que não há limite no tempo de execução do script, lembremos que por default vem no php.ini 30 segundos, e se este tempo for alcançado será produzido um erro fatal de tempo de execução.

 

Obtemos o tempo nesse instante em milésimos de segundos

 

Logo, faremos uma abertura do arquivo anterior e obtemos o conteúdo, mediante a função file_get_contents(), cabe destacar que o parâmetro que devemos utilizar deve seguir o esquema: protocol:// para que seja tomado como uma URL e se extraia o resultado do processo repetido anteriormente, do contrário se assumirá que o arquivo é local e se executará o código fonte diretamente: ou seja devemos colocar;

 

file_get_contents('http://odominio/carregar_bytes.php'), para que funcione corretamente.

Porém, não imprimiremos na tela o conteúdo, somente o carregaremos.

Agrupamos na variável $tamanho_KB, a longitude de caracteres de $conteudo, e o dividimos entre 1024; para passá-lo de BYTES A KB.

 

Quanto à abertura, voltamos a obter o tempo em milésimos de segundos para verificar quanto tempo transcorreu durante a execução do passo anterior e agrupamos esse valor na variável $tempo_utilizado, lhe damos formato com a função number_format();

 

Obtemos a velocidade em KBPS, dividindo o total de KB carregados, entre o tempo empregado;

Por exemplo, se: 100 Kb, são carregados em 2 segundos, a velocidade nesse instante é de 50 Kbps, mas ode variar dependendo de muitos fatores.

 

Imprimimos o resultado, e geramos um atraente esquema visual.

 

 

Autor/fonte do artigo: CriarWeb.com (http://www.criarweb.com/artigos/564.php)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.