Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Test de velocidad de conexión a Internet


Cómo obtener un reflejo aproximado de la conexión a internet, medida en Kbps.


08/8/05 - Estudiando rápidamente los sistemas que obtienen un reflejo aproximado de la conexión a Internet, medida en Kbps; se me ocurrió realizar algo similar en Php.

¿Cual es la utilidad?

Se puede determinar en cuanto tiempo aproximado se descargara un archivo de Internet.
Por ejemplo, si estamos elaborando una página de descargas y queremos mostrarle al usuario en cuanto tiempo APROX, estará ese archivo en su PC.

En realidad algo extremadamente sencillo ya veremos más adelante porque.

Teoría Básica

Es importante resaltar que un carácter CUALQUIERA siempre tendrá un tamaño de 1 Byte, es decir 8 impulsos electrónicos ( 8 Bit) , por lo cual una cadena de texto que contenga mil veinticuatro caracteres en total, tendrá una dimensión de 1024 Bytes lo que seria igual a 1 KB.

1 KB es igual 1024 Bytes
1 MB es igual a 1024 KB
1 GB es igual a 1024 MB
1 TB es igual a 1024 GB

El código fuente:
archivo : test.php

<?
set_time_limit(0);
$tiempo_micro[1]= microtime();
$q_espacios = explode(" ",$tiempo_micro[1]);
$tiempo_[1]= $q_espacios[1]+$q_espacios[0];

$contenido=file_get_contents('http://localhost/cargar_bytes.php'); /* cambiar por path real (URL) http://tudominio/cargar_bytes.php)*/
$tamano_KB= strlen($contenido)/1024;

$tiempo_micro[2] = microtime();
$q_espacios= explode(" ",$tiempo_micro[2]);
$tiempo_[2] =$q_espacios[1] + $q_espacios[0];
$tiempo_utilizado = number_format(($tiempo_[2] - $tiempo_[1]),3, "." ,",");

$velocidad= round($tamano_KB/$tiempo_utilizado,2);
echo 'Su velocidad de conexión es de: '.$velocidad.' Kbps <br> Se enviarón:'.$tamano_KB.
' Kb, Tiempo utilizado: '.$tiempo_utilizado.' Segundos <hr>';

for ($i=10; $i>=1; $i--){
$val_Kb=$i*100;
if($velocidad>=800)$velocidad_=800;
else $velocidad_=$velocidad/2;

if($velocidad>=$val_Kb && !$col){
echo '<div style="background-color:#F0F0F0; width:500px; float:left"><img width="'.($velocidad_).'" height="8" style="background-color: #FF0000" border="0"></div><strong>Su conexión</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>';
}
?>


archivo : cargar_bytes.php

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


Explicando:

Creamos el archivo cargar_bytes.php, que contendrá únicamente un proceso aleatorio de repeticiones hasta que alcance el valor de 1024000, 1000 KB, utilizando la función str_repeat(); que funciona en algo similar a un bucle. Se repetirá 1024000, la letra i

Llamaremos el archivo test.php,

Primero que nada utilizaremos la función set_time_limit(), para indicar que no hay limite en el tiempo de ejecución del script, recordemos que por default viene en el php.ini 30 segundos, y si este tiempo se alcanza se produce un error fatal de tiempo de ejecución.

Obtenemos el tiempo en ese instante en microsegundos

Luego hacemos una apertura del archivo anterior y obtenemos el contenido, mediante la función file_get_contents(), cabe destacar que el parámetro que debemos utilizar debe seguir el esquema: protocol:// para que se tome como una URL y se extraiga el resultado del proceso repetitivo anterior, de lo contrario se asumirá que el archivo es local y se ejecutara el código fuente directamente: es decir debemos colocar;

file_get_contents(‘http://eldominio/carcar_bytes.php’), para que funcione correctamente.
Pero no imprimiremos en pantalla el contenido, solo lo cargaremos.
Agrupamos en la variable $tamano_KB, la longitud de caracteres de $contenido, y lo dividimos entre 1024; para pasarlo de BYTES A KB.

Luego de la apertura, volvemos a obtener el tiempo en microsegundos para verificar cuanto tiempo trascurrió durante la ejecución del paso anterior y agrupamos ese valor en la variable $tiempo_utilizado, le damos formato con la función number_format();

Obtenemos la velocidad en KBPS, dividiendo el total de KB cargados , entre el tiempo empleado;
Por ejemplo si: 100 Kb, son cargados en 2 segundos, la velocidad en ese instante es de 50 Kbps, pero puede variar dependiendo de muchos factores.

Imprimimos el resultado, y generamos un atractivo esquema visual.

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada
+ 2 comentarios (Añadir)
+ 10 comentarios no revisados

 Autoría, licencia y acciones sobre este artículo

Informe de Emmanuel García De Caro*
Webmaster de Blasten.com
URL: http://www.blasten.com

Atención: Copyright. Este artículo no se puede reproducir sin la autorización expresa del autor.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Taller de PHP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Scripts en PHP


 Comentarios de los visitantes
Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar.
Se muestran 2 comentarios revisados

 Comentario de Olivers
08/8/05 
Tienes un error al decir que 1 byte son 6 bits. 1 byte realmente son 8 bits. Deberian corregir eso.

Saludos

RESPUESTA
Error corregido

 Comentario de alvaro
05/2/07 
arregle lo de arriba pero ahora me dice:Undefined variable: col in line 24

Añadir un comentario al artículo Añadir un comentario del artículo
 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se han encontrado 10 comentarios sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Taller de PHP
Categorías
+Scripts en PHP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb