Ir para conteúdo
Fórum Script Brasil
  • 0

Medidor de Velocidade


SoaresMSR

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

Em PHP não tem como, porque o script tem que rodar no computador do cliente.

O que conheço são em Flash, por causa das animações, mas acredito que de pra fazer em Javascript também.

O Javascript, ou o Flash, tem que fazer o download de um arquivo qualquer do servidor, usar o tempo de duração para calcular a velocidade e depois pode fazer o upload para o servidor via Ajax, no caso do Javascript, e usar o tempo para calcular o Upload.

Já trabalhei em provedor de Internet e isso é um terror para provedores, porque as vezes a máquina do cliente já está fazendo outro download, uma atualização do windows por exemplo, isso reduz a velocidade do download que resta para o cliente e não tem como o seu sistema calcular essa diferença.

Logo se a internet for de 5Mbps, o Windows está usando 3Mbps o seu sistema vai acusar no máximo 2Mbps. O cliente liga puto da vida, mas na verdade não existe problema nenhum com a internet.

Link para o comentário
Compartilhar em outros sites

  • 0

Acredito que Flash seja inviável em 2017. Você pode fazer com HTML5/JS e qualquer linguagem de backend. Aqui um exemplo feito com PHP:

https://github.com/adolfintel/speedtest

O SpeedTest (do speedtest.net) tem uma ferramenta em linha de comando feita em Python. Não uma restrição, vai depender da sua preferência.

Você pode olhar no GitHub o código de alguns projetos já prontos e tentar entender como funciona, assim como questionar sobre os desafios aos desenvolvedores originais.

Link para o comentário
Compartilhar em outros sites

  • 0

Se precisar de uma explicação como isso funciona é só chamar

Experimente

<html>
	<body>
		<h1 id="progress">JavaScript is turned off, or your browser is realllllly slow</h1>
		<script>
			//JUST AN EXAMPLE, PLEASE USE YOUR OWN PICTURE!
		var imageAddr = "http://www.kenrockwell.com/contax/images/g2/examples/31120037-5mb.jpg"; 
		var downloadSize = 4995374; //bytes

		function ShowProgressMessage(msg) {
			if (console) {
				if (typeof msg == "string") {
					console.log(msg);
				} else {
					for (var i = 0; i < msg.length; i++) {
						console.log(msg[i]);
					}
				}
			}
			
			var oProgress = document.getElementById("progress");
			if (oProgress) {
				var actualHTML = (typeof msg == "string") ? msg : msg.join("<br />");
				oProgress.innerHTML = actualHTML;
			}
		}

		function InitiateSpeedDetection() {
			ShowProgressMessage("Carregando dados, aguarde...");
			window.setTimeout(MeasureConnectionSpeed, 1);
		};    

		if (window.addEventListener) {
			window.addEventListener('load', InitiateSpeedDetection, false);
		} else if (window.attachEvent) {
			window.attachEvent('onload', InitiateSpeedDetection);
		}

		function MeasureConnectionSpeed() {
			var startTime, endTime;
			var download = new Image();
			download.onload = function () {
				endTime = (new Date()).getTime();
				showResults();
			}
			
			download.onerror = function (err, msg) {
				ShowProgressMessage("Invalid image, or error downloading");
			}
			
			startTime = (new Date()).getTime();
			var cacheBuster = "?nnn=" + startTime;
			download.src = imageAddr + cacheBuster;
			
			function showResults() {
				var duration = (endTime - startTime) / 1000;
				var bitsLoaded = downloadSize * 8;
				var speedBps = (bitsLoaded / duration).toFixed(2);
				var speedKbps = (speedBps / 1024).toFixed(2);
				var speedMbps = (speedKbps / 1024).toFixed(2);
				ShowProgressMessage([
					"Sua velocidade de conexão é:", 
					speedMbps + " Mbps"
				]);
			}
		}
		</script>
	</body>
</html>

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...