Código de PHP - Limitar el ancho de banda a la hora de entregar un archivo

Imágen de perfil
Val: 1.188
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Limitar el ancho de banda a la hora de entregar un archivográfica de visualizaciones


PHP

Publicado el 4 de Octubre del 2013 por Xavi (534 códigos)
3.289 visualizaciones desde el 4 de Octubre del 2013
Código que muestra como limitar el ancho de banda al leer un archivo.
Se especifica el tiempo y los Kb que puede leer en el tiempo indicado, tardando mas o menos en leer el archivo.

Basado en el código de Sabeen Malik
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=2224&lngWId=8

Versión 1

Publicado el 4 de Octubre del 2013gráfica de visualizaciones de la versión: Versión 1
3.290 visualizaciones desde el 4 de Octubre del 2013
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
# Definimos el archivo a descargar
$filedownload = "file.zip";
 
# definimos los milisegundos que queremos que tarde en descargar los kb
# definidos en la variable $obytes
# Modificar el valor de esta variable para visualizar la diferencia de tiempo
$time=$timeLimit=10000;
 
# definimos los kb que deseamos que se descargue en cada pasada
$obytes = 150*1024;
 
$start = misegundosUnix();
 
$fd = fopen ($filedownload, "rb");
 
while (!feof ($fd))
{
	# Obtenemos los fecha unix con milisegundos del inicio
    $time_start = misegundosUnix();
 
    # leemos del archivo los bytes indicados
    $bytes = ceil($obytes/100);
    $read=fread($fd, $bytes);
    # vaciamos el buffer
    flush();
 
    if($time < $timeLimit)
    {
		# Si el tiempo que hemos tardado en descargar los 150k es inferior
		# a los 10000 milisegundos, detenemos el proceso hasta alcancar los
		# 10000 miliegundos
		usleep($timeLimit-$time);
	}
 
	# Obtenemos los fecha unix con milisegundos del final
    $time_end = misegundosUnix();
 
    # Cogemos la diferencia y la pasamos a milisegundos
    $time = ceil(($time_end - $time_start)*1000000)+10;
}
fclose ($fd);
 
$end = misegundosUnix();
 
echo "Tiempo total: ".($end-$start)." segundos";
 
function misegundosUnix()
{
	# Obtenemos los fecha unix con milisegundos de inicio
	list($usec, $sec) = explode(" ", microtime());
	return $usec + $sec;
}
?>



Comentarios sobre la versión: Versión 1 (0)


No hay comentarios
 

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s2501