Controle de tráfego para download em PHP

Procurando na net sobre como controlar a banda em downloads usando PHP, achei este código interessante (e simples!):

<?
$filedownload
=
"files/abc.exe";
$time = 10000;
$obytes = 150*1024; //150k download speed restriction
$fd = fopen ($filedownload, "rb");
while (!
feof ($fd)) {
list(
$usec, $sec) = explode(" ", microtime());
$time_start = $usec + $sec;
$bytes = ceil($obytes/100);
echo
fread($fd, $bytes);
flush();

if(
$time < 10000) usleep(10000-$time);
$i++;
list(
$usec, $sec) = explode(" ", microtime());
$time_end = $usec + $sec;
$time =ceil(($time_end - $time_start)*1000000)+10;
}
fclose ($fd);
?>


Traduzindo do original: basicamente nos sabemos quantos bytes precisamos enviar por segundo, então calculamos o tempo em microsegundos (milisegundos) e fazemos a iteração deduzir o tempo restante de um segundo aguardando com um comando usleep. Se existir demora de mais de 1 segundo não será colocado delay.

Fonte

0 comentários: