you could read this
and then parse trace files to get the memory usage
create a global to store user functions, I think user function do not populate get_defined_functions(); until the function is called;
$t = get_defined_functions();
$userFunctions = $t['user'];
$file = xdebug_get_tracefile_name();
parse the file and then create a function to call the said variable.
I think you can figure it out. wrote:
Currently it's mostly procedural with some components that are OO. I suspect most of the memory sinks are large arrays (we have a lot of them), but I am not certain of that. Hence my interest in more accurate investigation tools.

--Larry Garfield wrote:
couple questions Larry is this application composed of classes or straight up no holes barred procedural code? wrote:
That's not really what I'm after.  Let me try an example:

function foo($id) {
  static $foos = array();

  if (empty($foos[$id]) {
    $foos[$id] = load_foo($id);
  return $foos[$id];

When load_foo() is slow (e.g., lots of DB traffic or remote-server calls or whatever), such caching can have a significant performance boost. Sometime after foo() has been called 15 times from 30 places in code, when I get to the end of the request (or just every time I call foo() would be fine) I want to be able to do something like:

$cost = get_memory_used_by($foos);

So that I can determine how much memory that caching is costing me over the lifetime of the page, and determine if it's a worthwhile trade-off.

--Larry Garfield wrote:
function check_memory_usage(&$memory)
    $memory[] = memory_get_usage();
    return $memory;

something like this?
you can put it wherever you like and returns an array for further processing. You could optionally add a second argument to set the index to a name and check if the name exists to add 1 to the end of the name so your indexes stay maintained.

PHP General Mailing List (
To unsubscribe, visit:

Reply via email to