2011-04-03 162 views
12

¿Cómo puedo crear una página PHP que detecte la velocidad de Internet del usuario y la muestre en la página? Algo así como,¿Cómo detectar la velocidad de Internet en PHP?

Su velocidad de internet es ??? Kbps

+0

php script se ejecuta en el servidor, supongo que no determinará la velocidad de Internet de los usuarios ... en lugar flash o java lo haría. –

Respuesta

8

Esto podría no ser completamente lo que está buscando (lea la parte en negrita), pero dudo si algo más es posible.

Este script envía 512 KB de comentarios HTML a su cliente. El análisis del HTML puede aumentar el tiempo total de transferencia, por lo que no lo toma como velocidad de descarga sin formato.

Citado de: PHP Speed test

Fuente está aquí:

http://jan.moesen.nu/code/php/speedtest/index.php?source=1

Espero que ayude.

3

Al subir un archivo a su servidor. Luego, divide el tamaño del archivo en kb con el tiempo transcurrido en segundos. Luego obtienes kb/s (velocidad de carga).

$kb = round(filesize("file.jpg")/1024); // 500kb 
$time = time() - $start; // 5s 
$speed = round($kb/$time); // 100kb/s 
+1

Sin embargo, ¿qué es '$ start'? –

+0

@ConnorSimpson que sería 'time()' o similar ... –

-2

No es realmente posible. PHP es del lado del servidor, detectando la velocidad del lado del cliente.

Puede encontrar opciones para hacerlo, aunque.

5

Por ejemplo, temporizando la solicitud AJAX en el lado del cliente. De esta forma, puede calcular la velocidad de descarga aproximada, pero no subirla. Para cargar, el envío de una gran solicitud AJAX POST puede manejarlo.

Con jQuery y $.ajax es bastante trivial de hacer.

+0

Tendría que dar cuenta de cosas como Powerboost de Comcast. –

+0

Supongo que tendrías más votos ascendentes si proporcionaste un ejemplo de código. –

8
<?php 
$kb=1024; 
echo "streaming $kb Kb...<!-"; 
flush(); 
$time = explode(" ",microtime()); 
$start = $time[0] + $time[1]; 
for($x=0;$x<$kb;$x++){ 
    echo str_pad('', 1024, '.'); 
    flush(); 
} 
$time = explode(" ",microtime()); 
$finish = $time[0] + $time[1]; 
$deltat = $finish - $start; 
echo "-> Test finished in $deltat seconds. Your speed is ". round($kb/$deltat, 3)."Kb/s"; 
?> 

http://www.emanueleferonato.com/2006/05/31/determine-connection-speed-with-php/

0

Esto funciona para mí:

$kb=512; 
    echo "streaming $kb Kb...<!-"; 
    flush(); 
    $time = explode(" ",microtime()); 
    $start = $time[0] + $time[1]; 
    for($x=0;$x<$kb;$x++){ 
     echo str_pad('', 1024, '.'); 
     flush(); 
    } 
    $time = explode(" ",microtime()); 
    $finish = $time[0] + $time[1]; 
    $deltat = $finish - $start; 
    echo "-> Test finished in $deltat seconds. Your speed is ". round($kb/$deltat, 3)."Kb/s"; 
    ?> 

me dieron esto desde here.

Cuestiones relacionadas