Limit Download Speed Using PHP

Today’s featured PHP snippet is from Jonas John and it’s a simple and helpful solution for controlling a file’s download rate. This is very beneficial for those who have limited bandwidth.

The code is still a bit rough around the edges and could use a bit more polishing. Like for one, the execution time doesn’t count the time script, rather it only counts the actual time required by the command and the functions. But nonetheless, it’s still a good approach at limiting the download rate.

// local file that should be send to the client
$local_file = 'test-file.zip';
// filename that the user gets as default
$download_file = 'your-download-name.zip';
// set the download rate limit (=> 20,5 kb/s)
$download_rate = 20.5;
if(file_exists($local_file) && is_file($local_file)) {
 // send headers
 header('Cache-control: private');
 header('Content-Type: application/octet-stream');
 header('Content-Length: '.filesize($local_file));
 header('Content-Disposition: filename='.$download_file);
 // 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);
}
else {
 die('Error: The file '.$local_file.' does not exist!');
}

If you’re looking for a nice alternative, you can check out Artur Graniszewski’s approach to throttling down QoS bandwidth.

Incoming search terms for the article:

Related Posts

eBag Toolkit

Creating a Psychedelic Art Effect in Your Portraits

Inspirational Photo Retouches By Cristian Girotto

Create Your Own Sticker Design Via Photoshop