titledk/silverstripe-xhprof

A Silverstripe module for facilitating profiling with XHProf

Installs: 67

Dependents: 0

Suggesters: 0

Security: 0

Stars: 11

Watchers: 5

Forks: 927

Type:silverstripe-module

dev-master 2013-10-27 16:44 UTC

This package is not auto-updated.

Last update: 2024-04-13 11:25:40 UTC


README

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

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.