HarryBeasant
HarryBeasant

Reputation: 490

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?

Upvotes: 3

Views: 935

Answers (3)

tim
tim

Reputation: 2732

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

Upvotes: 0

JHollanti
JHollanti

Reputation: 2413

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\"");

Upvotes: 1

Mike
Mike

Reputation: 3024

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

Upvotes: 1

Related Questions