RE: [PHP] file_get_contents limit
| From: | Daevid Vincent | Date: | Tue, 29 Jun 2010 21:18:12 +0000 |
| Subject: | RE: [PHP] file_get_contents limit | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-306553@lists.php.net to get a copy of this message | ||
> -----Original Message-----
> From: Andrew Ballard [mailto:aballard@gmail.com]
> Sent: Tuesday, June 29, 2010 1:56 PM
> To: ash@ashleysheridan.co.uk
> Cc: Jo?o C?ndido de Souza Neto; php-general@lists.php.net
> Subject: Re: [PHP] file_get_contents limit
>
> On Tue, Jun 29, 2010 at 4:39 PM, Ashley Sheridan
> <ash@ashleysheridan.co.uk> wrote:
> >
> > On Tue, 2010-06-29 at 16:37 -0400, Andrew Ballard wrote:
> >
> > > On Tue, Jun 29, 2010 at 4:21 PM, Ashley Sheridan
> > > <ash@ashleysheridan.co.uk> wrote:
> > > >
> > > > Have you looked at the memory settings in php.ini?
> > > >
> > >
> > > I doubt that is the cause, at least not by itself. 21504
> characters is
> > > only 21K of data (could be more if the characters are multi-byte
> > > encoded, but still less than 100K) , and the default
> memory limit in
> > > PHP is 128M. I'm not sure what else it could be, though,
> as I don't
> > > see any limitations on file_get_contents() discussed in
> the manual.
> >
> > Default memory limit is still 32MB on every default install
> I've seen.
> >
>
> The manual currently shows 128M, and that's what I've seen for some
> time now. Even so, a function returning less than 100K shouldn't
> exhaust 32M of memory either, unless something else is at play. If
> there is a memory limit being reached, PHP should log either an error
> or warning (I can't remember which).
Maybe try to specify the number of $maxlen bytes to read?
http://us4.php.net/file_get_contents
string file_get_contents ( string $filename [, bool $use_include_path =
false [, resource $context [, int $offset = -1 [, int $maxlen = -1
]]]] )
You could also do it the faster and "old fashioned" way:
$fh = fopen('/tmp/test.zip', 'r');
$data = fread($fh, filesize('/tmp/test.zip'));
fclose($fh);
Or if it's multibyte maybe try this:
function file_get_contents_utf8($fn) {
$content = file_get_contents($fn);
return mb_convert_encoding($content, 'UTF-8',
mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
}