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

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.