Skip to main content

Limiting download speeds with PHP



I have this code here, however i want to limit the speed the user can download at, how would i implement this into this code;







header("Content-type: application/force-download");

header("Content-Transfer-Encoding: Binary");

header("Content-length: ".filesize("uploads/$filename"));

header("Content-disposition: attachment; filename=\"$origname");

readfile("uploads/$filename");







Thanks!





This is what i tried;







$download_rate = 100;







$origname = get_file_name($file[0]);







header("Content-type: application/force-download");

header("Content-Transfer-Encoding: Binary");

header("Content-length: ".filesize("uploads/$filename"));

header("Content-disposition: attachment; filename=\'$origname'");



$local_file = "uploads/$origname";







// flush content flush();







// open file stream

$file = fopen($local_file, "r");



while (!feof($file)) {



// send the current file part to the browser

print fread($file, round($download_rate * 1024));



// flush the content to the browser

flush();



// sleep one second

sleep(1);

}



// close file stream

fclose($file);







Why doesn't this work?


Comments

  1. Hope this helps http://www.jonasjohn.de/snippets/php/dl-speed-limit.htm

    ReplyDelete
  2. If you've tried what @mugur suggested then there might be an issue somewhere else. For example in your snippet it seems you've got a missing escaped quotation mark:


    header("Content-disposition: attachment; filename=\"$origname");


    I guess it should be:


    header("Content-disposition: attachment; filename=\"$origname\"");

    ReplyDelete
  3. In your while fread, just calculate bytes and timestamps. Then add a tiny pause using usleep.

    ReplyDelete

Post a Comment

Popular posts from this blog

Slow Android emulator

I have a 2.67 GHz Celeron processor, 1.21 GB of RAM on a x86 Windows XP Professional machine. My understanding is that the Android emulator should start fairly quickly on such a machine, but for me it does not. I have followed all instructions in setting up the IDE, SDKs, JDKs and such and have had some success in staring the emulator quickly but is very particulary. How can I, if possible, fix this problem?