XHProf

How to install XHProf on CentOS 6.3 for a dev machine:

# yum install php-pear
# pecl config-set preferred_state beta
# pecl install xhprof

If this does not work, upgrade PEAR. Related discussion: https://bugs.php.net/bug.php?id=58650

# cat > /etc/php.d/xhprof.ini
extension=xhprof.so
xhprof.output_dir = /tmp
^C

Now XHProf is installed and should show up when you type $ php -i | grep -i xhprof

Caveat: I might have installed some "hidden" prerequisites prior to installing xhprof, add them here if you find them (and remove this note).

We will now continue to install the GUI:

Add:

php_value auto_prepend_file /usr/share/pear/xhprof_external/header.php
php_value auto_append_file /usr/share/pear/xhprof_external/footer.php

to /etc/httpd/conf.d/monitor.conf

# mkdir -p /usr/share/pear/xhprof_external
# cat > /usr/share/pear/xhprof_external/header.php
<?php

if(extension_loaded('xhprof')) {
        xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
        require dirname(__FILE__).'/../xhprof_lib/display/xhprof.php';
}
^C
# cat > /usr/share/pear/xhprof_external/footer.php
<?php

if(extension_loaded('xhprof')) {
        $profiler_namespace = 'ninja';
        $xhprof_data = xhprof_disable();
        $xhprof_runs = new XHProfRuns_Default();
        $run_id = $xhprof_runs->save_run($xhprof_data, $profiler_namespace);
        if((!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') && 0 !== strpos($_SERVER['REQUEST_URI'], "/api") && false === strpos($_SERVER['HTTP_USER_AGENT'], 'python-requests')) {
                $profiler_url = sprintf('/xhprof/?source=%s&run=%s', $profiler_namespace, $run_id);
                $js = '<script>$(document).ready(function() {
                        $(".headercontent ul:first")
                        .append("<li id=\"xhprof_loaded\"><a href=\"'.$profiler_url.'\">Profiler output</a></li>");
                });</script>';
                echo $js;
        }
}
^C
# ln -s /usr/share/pear/xhprof_html /var/www/html/xhprof
# mkdir -p /tmp/xhprof
# chgrp apache /tmp/xhprof
# service httpd restart
 All Data Structures Functions Variables

Generated on 18 Feb 2013 for ninja by  doxygen 1.6.1