/silverstripe-xhprof

A Silverstripe module for facilitating profiling with XHProf.

Primary LanguagePHPApache License 2.0Apache-2.0

XHProf module for Silverstripe

A Silverstripe module for facilitating profiling with XHProf.

Since the Silverstripe 3 release, Silverstripe's built-in profiling has been disabled (see this thread). Thus, this module has sprung out of neccesity for profiling in Silverstripe 3.

This is a fork from the XHProf PHP compiler, open sourced by Facebook in 2009. It has been amended for easy integration with Silverstripe as well as installation instructions in this readme.

Requirements

  • *nix environment (probably works on OSX as well)
  • Silverstripe 3+
    Would also work on older Silverstripe versions, but installation instructions need to be amended

Installation

useful guide: http://techportal.inviqa.com/2009/12/01/profiling-with-xhprof/

git clone https://github.com/candidasa/silverstripe-xhprof.git xhprof cd xhprof % phpize % ./configure --with-php-config= % make % make test % sudo make install

Add to php.ini: [xhprof] extension=xhprof.so xhprof.output_dir=/path/to/sites/xhprof/runs

Restart Apache

Adding to main.php: include "../../xhprof/_includes/header.php"; include "../../xhprof/_includes/footer.php";

install graphviz which dot sudo ln -s /opt/local/bin/dot /usr/local/bin/dot

http://localhost/?xhprof=1

XHProf needs to be installed and running on your system for this module to work. Once XHPprof has been installed, follow the following steps:

  • Download this module, and place it in your Silverstripe root, calling it xhprof
  • Edit /framework/main.php, adding the following lines at the very top (under <?php), and at the very bottom:
    include "../../xhprof/_includes/header.php";
    include "../../xhprof/_includes/footer.php";
  • Now, when running your site, you should see a Profiler output link on the very bottom of your site

Installing XHProf

On an *nix machine with PECL installed, follow this instruction:

  • [sudo] pecl config-set preferred_state beta
  • [sudo ] pecl install xhprof
  • Once installed, add this to the end of your php.ini file:
[xhprof]
extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"`

You might need to create the dirctory

  • For the graphs to work, you need to install GraphViz:
    apt-get install graphviz

XHProf Resources

Other Solutions

Beyond XHProf another PHP profiling solution would be using xDebug, combined with a visualizer, which would either be built-in to an IDE, or using the PHP-based Webgrind web interface.