Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos.
Bom galera tenho um script para medir a velocidade do download, mais ele é meio doido, ou muito incerto. As vezes para baixar um arquivo de 50 MB em uma net de 1 MB ele dá 3 horas, as vezes menos, as vezes mais.
Gostaria de saber de alguém tem um medidor mais eficiente, uso o seguinte script abaixo.
var tamanho_imagem = 261240; // Tamanho da imagem
var img = new Image();
$('form#megaupload').submit(function()
{
var url = $("input#megaupload").val();
var time_fim = (new Date).getTime();
var tempo = time_fim - time_inicio;
var velocidade = parseInt(tamanho_imagem / tempo * 1000);
$.ajax(
{
type:"POST",
url:"funcoes/enviar-dados-download-megaupload.php",
data:{velocidadeNet:velocidade, megaupload:url},
success: function(atual){
$('div#megaupload-link').html($(atual).find('div#megaupload-link').html());
}
})
return false;
});
var time_inicio = (new Date()).getTime();
img.src = "[http://localhost/ciep/img/megaupload/imagem-teste-velocidade-1.jpg?t="](http://localhost/ciep/img/megaupload/imagem-teste-velocidade-1.jpg?t=) + time_inicio;
Após pegar a velocidade faço o seguinte cálculo para ter uma idéia do download.
$horasDown = date("Y-m-d H:i:s",mktime(0,0,$size/$velocidadeNet));
$velocidadeNet = $_POST["velocidadeNet"];
$horasDown = date("Y-m-d H:i:s",mktime(0,0,$size/$velocidadeNet));
$horasDown = explode (" ", $horasDown);
$horasDown = explode (":", $horasDown[1]);
$somaHoras = strtotime( '+ '.$horasDown[0].' hour + '.$horasDown[1].' minutes', time() );
$size = tamanho do arquivo
$velocidadeNet = velocidade calculada pelo script
Obs.: antes de efetuar o cálculo olho se ele está em KB, MG OU GB.
Alguém tem um mais eficiente ou pode me dizer como que posso ajeitar esse ai ?!
Desde de já obrigado pela ajuda.
Velocidade em bytes é igual ao tamanho, em bytes, do arquivo, dividido pelo tempo total para fazer o upload ou download.
Acontece que a velocidade não é medida em bytes e sim em bits, então você precisará converter depois.
Olá João Batista Neto.
Mais antes de fazer essa divisão uso o seguinte abaixo para transformar o tamanho do arquivo em bits
if ( $unidade == "KB" || $unidade == "kb" ) { $size = $size * 1024; }
elseif ( $unidade == "MB" || $unidade == "mg" ) { $size = $size 1024 1024; }
elseif ( $unidade == "GB" || $unidade == "gb" ) { $size = $size 1024 1024 * 1024; }
else { $size = $size; }
Após obter o tamanho, faço a divisão, para mim ter idéia de quando vai terminar o download usando o seguinte abaixo.
$horasDown = date("Y-m-d H:i:s",mktime(0,0,$size/$velocidadeNet))
na fisica para mostra a velocidade usa, velocidade é igual a distancia dividida pelo tempo:
V=D/T
talvez ajude em algo ^_^
>
Mais antes de fazer essa divisão uso o seguinte abaixo para transformar o tamanho do arquivo em bits
Está transformando em BYTES, e não BITS. Para transformar de BYTES para BITS, multiplique por 8.
Então devo deixar minha função da seguinte forma abaixo, correto ?!
$horasDown = date("Y-m-d H:i:s",mktime(0,0,( $size * 8 ) / $velocidadeNet));
Só mais uma dúvida, na minha função uso uma imagem para o usuário fazer um download, e então calcular a velocidade da net.
Qual o tamanho ideal que devo usar ?! No momento uso uma de 256 kb.
Alguém poderia me dizer se para medir a velocidade do download, basta dividir o tamanho pela velocidade, deixando da seguinte forma abaixo.
$size/$velocidadeNet