Re: Bug #10701 Updated: readfile usage on large files

From: Date: Fri, 18 May 2001 04:55:39 +0000
Subject: Re: Bug #10701 Updated: readfile usage on large files
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-55695@lists.php.net to get a copy of this message
Well, you'd want to do it one block at a time. But yes, if you are going to be reading the files with PHP that's what you'll end up doing at some level anyway. Otherwise look at Apache's mod_header and perhaps dynamically generate the header information and write the appropriate .htaccess files or something... But now we are well beyond having anything to do with PHP. -Rasmus On 18 May 2001 stephen@national-net.com wrote: > ID: 10701 > User Update by: stephen@national-net.com > Status: Closed > Bug Type: Filesystem function related > Operating system: Linux 2.4.x > PHP Version: 4.0.5 > Description: readfile usage on large files > > You are kidding right? Nice way to take down a server. > > load average: 66.52, 33.25, 15.76 > > $fp = fopen("/web/sites/contentsite/".$f); > while(!feof($fp)) > { > echo fgets($fd, 4096); > } > fclose($fp); > > Previous Comments: > --------------------------------------------------------------------------- > > [2001-05-18 00:28:19] rasmus@php.net > What's to claim. This is a support question that belongs on one of the mailing lists and > not in the bug database. > > But a hint. Don't use readfile(), fopen() the file and read it a bit at a time instead of > sticking the entire thing in memory. > > --------------------------------------------------------------------------- > > [2001-05-17 17:29:33] stephen@national-net.com > Anyone plan on claiming this? > > --------------------------------------------------------------------------- > > [2001-05-07 07:34:13] stephen@national-net.com > Ok, this is a pretty intersting one, and I'm not even sure if it's a bug or just a > memory limit thing. I am using a php wrapper for content files (.jpg|.gif|.asf|.mov|.ram), as you > can guess, the movie files can be pretty large, upwards of 10MB, all getting read into memory, then > spit back out. Couple that with a site that gets 10K+ visits a day and the server is on its knees > with a load average of about 10 (when it gets to 25/30 things start swapping and it will dies not > long after that.) > > here's the code used to wrap the content: > > <?php > $mime_type = strtolower(strrchr($f,'.')); > $mime_type_array = array( > '.asf' => 'application/vnd.ms-asf', > '.jpg' => 'image/jpeg', > '.gif' => 'image/gif' > ); > > if(!in_array($mime_type,array_keys($mime_type_array))) > { > header("Location: /error.php"); > } > > $offset = 86400 * 3; > header("Expires: ".gmdate("D, d M Y H:i:s GMT", time() + $offset)); > header("Cache-Control: max-age=".$offset.", must-revalidate"); > header("Last-modified : ".gmdate("D, d M Y H:i:s GMT", > filemtime("/web/sites/contentsite/".$f))); > header("Content-type: ".$mime_type_array[$mime_type]); > header("Content-length: ".filesize("/web/sites/contentsite/".$f)); > @readfile("/web/sites/contentsite/".$f); > ?> > > so, I would pass an image or movie to the content file with a url like so: > > http://contentsite.com/content.php?f=movies/bigmovie.asf > > > This is really just a heads up at this point, I know it will take you guys a little while to > sort through this one, I'm not even sure it's a bug considering readfile is SUPPOSED to > read a file into memory and spit it back out. I dunno, for now I'm going to do some .htaccess > tricks where I force php to parse .htaccess files. If anyone has come across this or has any insight > on wrapping content in php files, please email me at stephen@national-net.com > > Thanks! > Stephen VanDyke > > PS - aside from that, great language, I love PHP :) > > --------------------------------------------------------------------------- > > > Full Bug description available at: > http://bugs.php.net/?id=10701 > > >

« previous php.dev (#55695) next »