Return to Snippet

Revision: 62461
at February 25, 2013 18:41 by apphp-snippets


Initial Code
<?php
/* set here a limit of downloading rate (e.g. 10.20 Kb/s) */
$download_rate = 10.20;
 
$download_file = 'download-file.zip';  
$target_file = 'target-file.zip';
 
if(file_exists($download_file)){ 
    /* headers */
    header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
    header('Cache-control: private');
    header('Content-Type: application/octet-stream');
    header('Content-Length: '.filesize($download_file));
    header('Content-Disposition: filename='.$target_file);
 
    /* flush content */
    flush();
 
    /* open file */
    $fh = @fopen($download_file, 'r'); 
    while(!feof($fh)){ 
        /* send only current part of the file to browser */
        print fread($fh, round($download_rate * 1024));
        /* flush the content to the browser */
        flush(); 
        /* sleep for 1 sec */
        sleep(1);
    } 
    /* close file */
    @fclose($fh); 
}else{
    die('Fatal error: the '.$download_file.' file does not exist!');
}
?>

Initial URL
http://www.apphp.com/index.php?snippet=php-download-file-with-speed-limit

Initial Description
This snippet allows you set a limitation for download rate of the file that visitors download from your site.

Initial Title
Download File with a Speed Limit in PHP

Initial Tags
php, file, download

Initial Language
PHP