Problems downloading files larger than 50MB

Ask about general coding issues or problems here.

Moderators: gesf, Michalio

Post Reply

I'm using the following code for users to download files from my website. It works fine for files under 50MB, but fails immediately for larger files. Can someone explain why this is happening and how to fix it? Some of the downloadable files are over 800MB, so I need this working.

Thanks in advance

Code: Select all


$php_scripts = '../../php/';
require $php_scripts . 'PDO_Connection_Select.php';
require $php_scripts . 'GetUserIpAddr.php';

$ip = GetUserIpAddr();
if (!$pdo = PDOConnect("foxclone_data"))
{	echo "unable to connect";

function mydloader($l_filename=NULL){    
    if( isset( $l_filename ) ) {
        $filename = preg_replace("/\s+/u", " ", $l_filename);
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        if  ($ext == '.deb')
            header('Content-Type: octet-stream');
        elseif ($ext == '.iso')
            header('Content-Type: application/x-cd-image');
        elseif ($ext =='.gz')
            header('Content-Type: application/zip');
            header('Content-Type: octet-stream');

            header('Content-Description: File Transfer');
            header("Content-Disposition: attachment; filename={$filename}");
            header('Pragma: public');
            header('Expires: 0');    
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($filename));   
        // Get lookup id
        $test = $pdo->query("SELECT FROM lookup WHERE inet_aton('$ip') >= lookup.ipstart AND inet_aton('$ip') <= lookup.ipend");
        $ref = $test->fetchColumn();
        $ref = intval($ref);

        // Insert record in download table
        $stmt = $pdo->prepare("INSERT INTO download (`address`, `filename`, `ip_address`, `lookup_id`) VALUES (?, ?, inet_aton('$ip'),?)");
        $stmt->execute([$ip, $ext, $ref]) ; 
    else {
        echo "isset failed";
Post Reply