tags:

views:

76

answers:

4

At some point in my php script that makes use of curl, the following error shows up: "Fatal error: Allowed memory size of 262144 bytes exhausted (tried to
allocate 77824 bytes) in"... It points out this part of the script: "$s = curl_exec($c);"

What is the problem? And how to settle it down?

+7  A: 

In this case, your server is misconfigured.

Allowed memory size of 262144 bytes

200 kilobytes of RAM per script are not enough for most PHP scripts. The standard in my experience is 8 MB minimum; 16 MB is normal. A blog system like WordPress (it is admittedly fat, but still one of the most popular blog systems around) chokes on 8 MB and runs half-way decently with 16.

You should change the memory_limit value in your php.ini. If you're on shared hosting, demand that the provider increase it to at least 8M, better 16M or more. If they deny, get out of there: It's sub-standard hosting.

Unicron
+4  A: 

you are tying to allocate more memory than the heap can handle

set your limit higher, for xample

at the top of the script::

ini_set("memory_limit","10M");

or in your php.ini

memory_limit = 10M

this set your memory_limit to 10M

Jorgesys
A: 

Here are a couple of suggestions:

  1. edit your php.ini file and change the line that says memory_limit = .25M so that it says

    memory_limit = 16M

  2. make sure you are calling

    curl_close($c);

    consistently.

If you want to include a larger code snippet, maybe we can see where you have memory leaks.

GoalBased
+1  A: 

ini_set() is probably better than setting something in php.ini. If you've got a specific application you know needs more than the standard memory - then it's fine to increase the memory limit for that application. You want to be really careful opening up all your code to having a higher memory limit though.

That said, if you set memory_limit to 0, there is no memory limit & the script will use as much memory as it needs (and the system can give it).

Pickle