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.
- *nix environment (probably works on OSX as well)
- Silverstripe 3+
Would also work on older Silverstripe versions, but installation instructions need to be amended
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
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
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
- A very good guide on profiling with XHProf:
http://techportal.inviqa.com/2009/12/01/profiling-with-xhprof/ - Another tutorial:
http://net.tutsplus.com/tutorials/php/advanced-codeigniter-profiling-with-xhprof/
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.