function readfile_chunked ($filename) { $chunksize = 1*(1024*1024); $buffer = ''; $bytesSent = 0; $handle = fopen($filename, 'rb'); if ($handle === false) { report_error("Download failed. IP: $_SERVER[REMOTE_ADDR] FILE: $filename. $error", 0); return false; } while (!feof($handle)) { $buffer = fread($handle, $chunksize); print $buffer; $bytesSent += strlen($buffer); } fclose($handle); if ($bytesSent != filesize($filename)) { report_error("Download failed. IP: $_SERVER[REMOTE_ADDR] FILE: $filename. Size mismatch", 0); return false; } else return true; return true; }