|
Posted by Andy Hassall on 09/25/06 22:25
On 25 Sep 2006 13:41:02 -0700, "comp.lang.php" <phillip.s.powell@gmail.com>
wrote:
>I have an image that's only 100K in size, and I am working with 8mb of
>memory. If I do this:
>
>[PHP]
>print_r(ceil((int)ini_get('memory_limit') * 10 *
>filesize(actual_path("$locationPath/$this->fileName")) / 1000000) .
>'M'); // PRINTS OUT "2M" for 2mb
>]/PHP]
Maybe I'm having a dense moment, but what does this value even mean?
memory_limit times 10 times size of file then divided by a million?
Is the output actually "2M" ? If you have a 100,000 byte file, doesn't that
mean your memory_limit is set to "2" ? (presumably "2M", turning into "2" after
the cast to int).
>The image itself requires far less than the maximum amount of memory
>required.
>
>However, the moment I do this:
>
>[PHP]
> $imagestring =
>@file_get_contents(actual_path(realpath("$locationPath/" .
>$this->{$section . '_name'})));
>[/PHP]
>
>It locks up and forces a download of "index.php" (which indicates to me
>that the memory allotment of 8mb has been used up).
That seems like a guess... what error messages do you get? If you can't see
them, change the content-type of the output back to text.
>How in the world can a 100KB image that uses only 2mb of 8mb use up 8mb
>of memory on file_get_contents() alone? I'm completely confused!
Why would a 100KB image use 2MB? Where did 8MB come from? I'm also confused...
The usual pitfall is that a 100KB image can easily decompress to several
megabytes, and that GD uses even more memory than you might expect.
--
Andy Hassall :: andy@andyh.co.uk :: http://www.andyh.co.uk
http://www.andyhsoftware.co.uk/space :: disk and FTP usage analysis tool
Navigation:
[Reply to this message]
|