Analysis of loaded parts of Php code with xhprof

xhprof is a tool that allows you to collect information both on the local machine and in production.

The choice fell on xhprof, since with certain additions, you can visually monitor the work of classes and build graphs.

1. Install on Ubuntu 14.04 // I won't change to a new one =)

The regular command did NOT fit, I don’t have this in the repositories (apt-get install xhprof), so I had to build it on my knee.

sudo apt-get install php-pear php5.6-dev php5.6-mcrypt

sudo php5enmod mcrypt

sudo pecl install xhprof-beta

Installation is carried out through pecl, and above are the necessary extensions for php and the mcrypt connection. Installation packages depend on the version of Linux and on the version of php.

2. For your version of php, set the definition in mods-available:

sudo nano /etc/php/5.6/mods-available/xhprof.ini

add lines to the file

extension=xhprof.so

If everything went right, then you can connect the xhprof module (for your version of php).

sudo php5enmod xhprof

sudo service apache2 restart

3. Checking the installed package :

php -i | grep xhprof

xhprof varsion
4. Getting Started :
After a successful installation and witchcraft, this design stopped throwing errors in the code.

<?php

// Initialize xhprof
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

foreach ([1,2,3] as $v) {
echo $v;
}

// Stop xhprof after program execution
$xhprof_data = xhprof_disable();

XHPROF_FLAGS_CPU - CPU time analysis

XHPROF_FLAGS_MEMORY - memory analysis

The usage is very simple, the code you need for debugging should be placed between xhprof_enable() and xhprof_disable(). $xhprof_data will contain all the information. But it is difficult for human understanding.

5. For more convenient processing of this information :

There is a ready-made interface for submitting shot information in human form. Download here . Or here . Or terminal:

cd /var/www; wget http://pecl.php.net/get/xhprof-0.9.4.tgz gzip -d xhprof-0.9.4.tgz tar -xvf xhprof-0.9.4.tar

You should unpack the contents of the archive into a directory that will be available as a domain. For example, on the local machine it is /var/www/xhprof-0.9.4

5.1. We start a local address (it will be xhprof.loc on apache):

sudo nano /etc/apache2/sites-available/xhprof.conf

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName xhprof.loc
ServerAlias www.xhprof.loc
DocumentRoot /var/www/xhprof-0.9.4/xhprof_html
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/xhprof-0.9.4/xhprof_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

sudo nano /etc/hosts

127.0.0.1 www.xhprof.loc
127.0.0.1 xhprof.loc

sudo service apache2 restart

As it is already clear, the working folder of this engine is xhprof_html . The front end looks like this:

xhprof_html

5.2. Usage in code :

For use, after xhprof_disable(), add lines defining the place where to dump the spent logs.

<?php

// Initialize xhprof
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

foreach ([1 ,2,3] as $v) {
    echo $v;
}

// Stop xhprof after program execution
$xhprof_data = xhprof_disable();

// Disable data with id " "
// Note that the path where we unpacked everything
include_once "/var/www/xhprof-0.9.4/xhprof_lib/utils/xhprof_lib.php";
include_once " /var/www/xhprof-0.9.4/xhprof_lib/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, " product");

product xhprof

Gives a lot of information on all running classes:

xhprof_info

6. Graphic report :

Also, xhprof allows you to generate a graphical report, which makes it clear what is knocking and where. This requires the installation of graphviz .

sudo apt-get install graphviz

graphviz

Used sources: source1 source2

2343 0

Comments

Be the first to review this item. Share your rating and review so that other customers can decide if this is the right item for them.
You have to log in to leave a comment. Sign in

Similar articles

Create and download CSV in PHP

Consider the possibility of quickly creating a CSV file with automatic file download. Consider the formation, separators and header for the ability to download the file.