On Mon, Feb 06, 2006 at 09:21:22AM -0800, Daniel Bondurant wrote:
> I am using php and readfile() to control the download of large files;
> These files can be up to 1GB. There is nothing really exciting or
> special about the script itself.
>
> The problem I am running into is php is loading the entire file into
> apache's memory as the file is being read - this seems quite
> unnecessary. I tired it with fpassthru() as well, with the same
> result.
>
> Why is php loading the entire file into memory? Is there another/
> better way to download the files (other that resorting to
> mod_rewrite) that won't use up necessary memory?
>
> thanks
> - daniel
>
Try 'fread' instead. You can control how many bytes are read.
Something like:
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
do {
$contents = fread($handle, <number of bytes to read>);
} while ($contents !== false);
fclose($handle);
What are you doing with the file? Do you want to output it as you
read it? You will need to send the contents of $contents to the
browser and flushing buffers.
--
Jim Kaufman
Linux Evangelist
public key 0x6D802619
CCNA, CISSP# 65668
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php