Skip to content
XHGUI is a GUI for the XHProf PHP extension, using a database backend, and pretty graphs to make it easy to use and interpret.
Find file
Pull request Compare This branch is even with preinheimer:highchart.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


**Updating to this branch requries changes to your table schema, either figure out how
to migrate your data or drop, and re-create. New schema in xhprof_runs.php**

This branch/clone/whatever git calls it of the official Facebook GUI does a few things:

 - It includes a header.php and footer.php document you can use with PHP's auto_prepend_file and
auto_append_file directives. They set up profiling when requested (?_profile=1), or randomly. Profiled
pages display a link to their profile results at the bottom of the page (this can be disabled on a
black list bases for specific documents. e.g. pages generating XML, images, etc.).
 - The GUI is a bit prettier (Thanks to Graham Slater)
 - It uses a MySQL backend, the database schema is stored in xhprof_runs.php 
 - There's a front end to view different runs, compare runs to the same url, etc. Key features include:
    - Listing 25, 50 most recent runs
    - Display most expensive (cpu), longest running, or highest memory usage runs for the day
 - It introduces the concept of "Similar" URLs. Consider:
 While the URLs are different, the PHP code execution path is likely identical, by tweaking
the method in xhprof_runs.php you can help the front end be aware that these urls are identical.
 - Google's data visualization tool is used to graph stats over requests for an easy heads up display.

 - Zlib library in PHP:
 Used to compress serialized data
 - Short tags must be enabled

Work that we're still doing:
 - The aggregation functionality is ignored completely
 - The code is... a mess. Deadlines do that to you, we're working on it
 - The default table schema isn't indexed all the places it needs to be
 - Easier ways to diff URLs
Something went wrong with that request. Please try again.