Re: PHP memory usage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



A Palmblad wrote:
We've been running into some issues with PHP and Postgres, and memory usage.
On a dual athlon 64, w/ 4 gigs of RAM, PHP 4.3.6, and Postgres 7.4.2 I've
seen our server start to crawl after some queries returning very large
result sets.  Although large result sets aren't exactly what we want to be
dealing with, I really want to avoid a situation where a user could disrupt
our server with certain options to some searches.

I did a quick commandline test, and it looks like PHP starts to eat memory
during its call to pg_query.  By eat memory, I mean use memory well in
excess of php.ini's memory_limit of 8 megs.  (I stop it around 90% of
available memory usage)  Is this acceptable behaviour, or should I report it
to PHP as a bug?  If not, are my only solutions to wrap my selects in
cursors and/or to use limit?

-Adam Palmblad


---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings



My guess is that PHP is pulling the entire record set into memory, something which is not good as you can imagine. The only real solutions to this are to reduce the size of the record set, or use cursors.

You could reduce the size of the record set by using paging, i.e. only allowing the user to see say 20 records out of 5000. The way I have implemented this in the past is to do a COUNT(*) on the entire record set then use LIMIT 20 OFFSET 200. Alternatively you could use the cursor to return the data you want to look at.

Hope that almost helps.


Nick



[Index of Archives]     [Postgresql General]     [Postgresql Admin]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Yosemite Backpacking]     [Postgresql Jobs]

  Powered by Linux