Re: PHP memory usage

From: Christopher Kings-Lynne <chriskl(at)familyhealth(dot)com(dot)au>
To: Robert Treat <xzilla(at)users(dot)sourceforge(dot)net>
Cc: A Palmblad <adampalmblad(at)yahoo(dot)ca>, Robby Russell <rrussell(at)commandprompt(dot)com>, pgsql-php(at)postgresql(dot)org
Subject: Re: PHP memory usage
Date: 2004-06-03 01:37:17
Message-ID: 40BE80CD.4080308@familyhealth.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-php

The simple answer is the PHP's built-in memory checking cannot control
what a plugin .so does. Use a cursor.

Chris

Robert Treat wrote:

> Interesting... I was just about to post a question regarding the differences
> between the functions mysql_query and mysql_unbuffered_query in regards to
> pg_query, but I guess this is the issue right here, and from what I can tell
> there is no php based way to work around it.
>
> Robert Treat
>
> On Wednesday 02 June 2004 16:41, A Palmblad wrote:
>
>>I watch Postgres while its doing the query - and the postmaster is not the
>>culprit for memory usage. It looks to me like PHP's postgres driver is
>>loading the entire result into memory when I do a query. That is, the
>>postgres process stays within the memory its config tells it to use, while
>>a PHP script will eat as much as it can to load the result set. Although I
>>would think best practices would dictate the use of a cursor or some limit
>>statements, I was also trying to get at whether or not a PHP extension
>><i>should</i> be able to use as much RAM as it wants.
>>
>>-Adam
>>----- Original Message -----
>>From: "Robby Russell" <rrussell(at)commandprompt(dot)com>
>>To: "A Palmblad" <adampalmblad(at)yahoo(dot)ca>
>>Cc: <pgsql-php(at)postgresql(dot)org>
>>Sent: Wednesday, June 02, 2004 1:17 PM
>>Subject: Re: [PHP] PHP memory usage
>>
>>
>>>A Palmblad typed this on 05/31/2004 02:22 PM:
>>>
>>>>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
>>>
>>>I am going to take a quick guess and suggest that test those queries in
>>>psql itself. You might be running into some issues with your queries.
>>>
>>>
>>>Test your queries with psql, EXPLAIN.
>>>\h EXPLAIN
>>>
>>>-Robby
>>>
>>>--
>>>Robby Russell, | Sr. Administrator / Lead Programmer
>>>Command Prompt, Inc. | http://www.commandprompt.com
>>>rrussell(at)commandprompt(dot)com | Telephone: (503) 667.4564
>>>
>>>---------------------------(end of broadcast)---------------------------
>>>TIP 7: don't forget to increase your free space map settings
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 7: don't forget to increase your free space map settings
>
>

In response to

Responses

Browse pgsql-php by date

  From Date Subject
Next Message Dave Page 2004-06-03 18:46:25 Maintaining a transaction across multiple HTTP requests
Previous Message Chris 2004-06-03 00:56:54 Re: Question about checkboxes in forms