Log memory usage using declare and ticks in PHP

Update:See the first comment, looks a far better and more accurate way of tracking memory usage, thanks Mathieu.

As far as I know, there isn't any memory footprint profiling in Xdebug, I think there was at some point but they removed it because it was a little flaky. I like to monitor the memory usage within my scripts, and I've found this simple snippet can help. I don't think it's entirely accurate, but it can help a little. Unfortunately, I don't think it works all that well on Windows, if at all. All good on Linux though.

<?php

function log_memory() {
    $_SESSION['memory'][] = array(
        'time'   => microtime(true),
        'memory' => memory_get_usage(),
    ); // or insert your logging code here
}

declare(ticks = 50); // log every 50 ticks (low level instructions)
register_tick_function('log_memory');
$var = 'a';

for($i=0;$i<100;$i++) {
    $var .= 'a';
}

var_dump($_SESSION['memory']);

?>



Twitter Icon You should follow me on twitter here
blog comments powered by Disqus

About

Photo of Dave Marshall

Dave Marshall is a Software Engineer living near Hull, England. He works on various personal projects and is the Technical Manager at Childcare.co.uk

Dave specialises in web application development for the LAMP stack, but always tries to choose a tool set that is most fit for purpose.

Dave is a Zend Certified Engineer and a Member of the British Computer Soceity.

Read more about Dave

Follow Dave:

Links