From: Ashley Sheridan on
On Tue, 2010-06-29 at 16:37 -0400, Andrew Ballard wrote:

> On Tue, Jun 29, 2010 at 4:21 PM, Ashley Sheridan
> <ash(a)ashleysheridan.co.uk> wrote:
> > On Tue, 2010-06-29 at 17:02 -0300, Jo?o C?ndido de Souza Neto wrote:
> >
> >> The characters are stripped off of the end of the file after that point.
> >>
> >> --
> >> Joo Cndido de Souza Neto
> >>
> >> "Ashley Sheridan" <ash(a)ashleysheridan.co.uk> escreveu na mensagem
> >> news:1277841481.2253.39.camel(a)localhost...
> >> > On Tue, 2010-06-29 at 16:53 -0300, Jo?o C?ndido de Souza Neto wrote:
> >> >
> >> >> Ive got a file with only one line 21917 characters long but when I read
> >> >> this file using $varData = file_get_contents("file.txt") it gets only
> >> >> 21504
> >> >> characters.
> >> >>
> >> >> Anyone would know why does it happen?
> >> >>
> >> >> Thanks in advance.
> >> >>
> >> >> --
> >> >> Joo Cndido de Souza Neto
> >> >>
> >> >>
> >> >>
> >> >
> >> >
> >> > Are the characters stripped off of the end of the file after that point,
> >> > or is the encoding not correctly determined and some characters are
> >> > converted the wrong ones?
> >> >
> >> > Thanks,
> >> > Ash
> >> > http://www.ashleysheridan.co.uk
> >> >
> >> >
> >> >
> >>
> >>
> >>
> >
> > Have you looked at the memory settings in php.ini?
> >
> > Thanks,
> > Ash
> > http://www.ashleysheridan.co.uk
> >
> >
> >
>
> 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.
>
> Andrew


Default memory limit is still 32MB on every default install I've seen.

Thanks,
Ash
http://www.ashleysheridan.co.uk


From: Andrew Ballard on
On Tue, Jun 29, 2010 at 4:39 PM, Ashley Sheridan
<ash(a)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(a)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).

Andrew
From: "Daevid Vincent" on
> -----Original Message-----
> From: Andrew Ballard [mailto:aballard(a)gmail.com]
> Sent: Tuesday, June 29, 2010 1:56 PM
> To: ash(a)ashleysheridan.co.uk
> Cc: Jo?o C?ndido de Souza Neto; php-general(a)lists.php.net
> Subject: Re: [PHP] file_get_contents limit
>
> On Tue, Jun 29, 2010 at 4:39 PM, Ashley Sheridan
> <ash(a)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(a)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));
}