shaula / yaxgui

YaxGUI (Yet another xhprof GUI) is a GUI for the tideways PHP extension (a fork from XHProf which does not support with PHP7 yet), using a database backend, and pretty graphs to make it easy to use and interpret.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

YaxGUI (Yet another xhprof GUI)

This is a graphical front end designed to store and present the profiling information provided by the tideways Extension. YaxGUI will only support tideways because all other extensions will not be updated to run with PHP7 (yet).

I took the preinheimer/xhprof and removed the extension because I only want a GUI with MySQL and PDO. The fork I am now running will be changed step by step... So...

I am working on

  • Naming of methods/functions have xhprof (can be better...)
  • perhaps switch to doctrine
  • Better UI (I think about AdminLTE )
  • Charts with ChartJS
  • working with composer and bower packages

Done

  • switch to ext-tideways

Related Tools

  • XHProf UI - Uses MySQL as a backend but only support xhprof and old ext-mysql
  • XHGui - Uses MongoDB as a backend
  • XHProf.io - Uses MySQL backend, more normalized storage schema

Project Includes

  • It includes a header.php document you can use with PHP's auto_prepend_file directive. It sets up profiling by initilizing a few variables, and settting register_shutdown_function with the footer. Once started profiles are done 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 blacklist based for specific documents. e.g. pages generating XML, images, etc.).
  • For tips on including header.php on an nginx + php-fpm install take a look at: http://www.justincarmony.com/blog/2012/04/23/php-fpm-nginx-php_value-and-multiple-values/
  • 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 frontend to view different runs, compare runs to the same url, etc.

Key Features

  • 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:
  • Highcharts is used to graph stats over requests for an easy heads up display.

Requirements

Besides a simple PHP running on your favourite web server you will also need following packages:

  • php-tideways
  • php5-mysql
  • graphviz (uses dot to generate callgraphs)

Installation

  • Install your favourite mix of PHP and web server
  • Install MySQL server
  • Clone the project to some folder
  • Map the sub folder xhprof_html to be accessible over HTTP
  • Move xhprof_lib/config.sample.php to xhprof_lib/config.php
  • Edit xhprof_lib/config.php
  • Update the SQL server configuration
  • Update the URL of the service (should point to xhprof_html over HTTP)
  • Update the dot_binary configuration - otherwise no call graphs!
  • Update the controlIPs variable to enable access.
  • For a development machine you can set this to false to disable IP checks.
  • Import the DB schema (it is just 1 table)
  • See the SQL at xhprof_runs.php
  • Add a PHP configuration to enable the profiling
  • If using Apache you can edit your virtual host configuration
  • Add php_admin_value auto_prepend_file "/path/to/xhprof/external/header.php"
  • Visit http://your-server/xhprof/xhprof_html/ and be amazed!
  • To get profiler information showing up there visit your page with a GET variable _profile=1.
  • For example http://localhost/?_profile=1

About

YaxGUI (Yet another xhprof GUI) is a GUI for the tideways PHP extension (a fork from XHProf which does not support with PHP7 yet), using a database backend, and pretty graphs to make it easy to use and interpret.

License:Other


Languages

Language:PHP 66.6%Language:HTML 28.6%Language:CSS 4.8%