Do you have a question? Post it now! No Registration Necessary. Now with pictures!
- Posted on
- freeing memory
- Mad Hatter
January 2, 2008, 10:46 pm
rate this thread
I have a script which reads the mysql database,does a lot of string
manipulation then writes its output to a file. The manipulation is all done
in a separate function which is called over and over again but with each
time it's called it's not releasing the memory allocated from the last
call. After a few Calls it's running out of memory. I'm using 'echo
memory_get_usage()' to check the usage and unset(variable names) to try and
free things up. Anyone tell me where I'm going wrong please.
Re: freeing memory
Hard to tell based on this only.
A few ideas:
If your function finishes, you shouldn't unset anything used in that
$IamOnlyHere = "blabla";
when you call testmem(), the variable $IamOnlyHere is only used during
your function, and is gone after the call.
Also the memory allocated is freed.
So no need to unset() it.
So my guess would be that you use some global variables or growing
variables in the scope of your script, like this (stupid example):
$IgetBig = "";
$IgetBig .= getMore($i);
// probably never reach here, because out-of-memory
$returnThis = str_repeat("bla",$number);
In the above example $IgetBig is the variable that consumes all the
memory after a short while. Unsetting $returnThis in function getMore()
Any chance some of the variables in the normal scope of the script are
growing too much? Or are you maybe using one of the superglobals to
store stuff, like $_SESSION?
If the above doesn't help you try something like this:
at some smart points in your script.
It produces all the variabels in use.
(Mind the $GLOBALS instead of the expected $_GLOBALS, expected by me at
Good luck with the bughunt.
- » Script that receives email message and responds depending on content
- — Previous thread in » PHP Scripting Forum