Аналіз навантажених частин Php коду за допомогою xhprof

xhprof – інструмент, який дозволяє збирати інформацію як на локальній машині, так і на продакшені.

Вибір впав на xhprof, тому що за певних доповнень можна візуально відстежувати роботу класів та будувати графіки.

1. Ставимо на Ubuntu 14.04 // не переб'ю на нову =)

Штатна команда НЕ ПІДІШЛА, у мене в репозиторіях такого немає (apt-get install xhprof), тому довелося збирати його на коліні.

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

sudo php5enmod mcrypt

sudo pecl install xhprof-beta

Установка ведеться через pecl, а вище необхідні розширення для php та підключення mcrypt. Настановні пакети залежать від версії лінукса та від версії php.

2. Для своєї версії php задаємо визначення в mods-available:

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

у файл внесемо рядки

extension=xhprof.so

Якщо все пройшло правильно, можна підключити модуль xhprof (під свою версію php).

sudo php5enmod xhprof

sudo service apache2 restart

3. Перевірка встановленого пакета :

php -i | grep xhprof

xhprof varsion
4. Початок роботи :
Після вдалої установки та чаклунства, у коді перестала кидати помилки така конструкція.

<?php

// Ініціалізуємо xhprof
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

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

// Зупиняємо xhprof після виконання програми
$xhprof_data = xhprof_disable();

XHPROF_FLAGS_CPU - аналіз процесорного часу

XHPROF_FLAGS_MEMORY - аналіз пам'яті

Використання дуже просте, потрібний для налагодження код слід розмістити між xhprof_enable() та xhprof_disable(). $xhprof_data буде містити всю інформацію. Але для людського розуміння вона складна.

5. Для зручнішої обробки даної інформації :

Існує готовий інтерфейс для подання відстріляної інформації у людському вигляді. Завантажити тут . Або тут . Або термінал:

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

Слід розпакувати вміст архіву в директорію, яка буде доступна як домен. Наприклад, на локальній машині це /var/www/xhprof-0.9.4

5.1. Заводимо локальну адресу (буде xhprof.loc на 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

Як відомо, робоча папка цього движка - xhprof_html . Фронтова частина виглядає так:

xhprof_html

5.2. Використання в коді :

Для використання, після xhprof_disable() слід додати рядки визначення місця, куди скидати відпрацьовані логи.

<?php

// Ініціалізуємо xhprof
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

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

// Зупиняємо xhprof після виконання програми
$xhprof_data = xhprof_disable();

// Стажує дані з ідентифікатором " "
// Зверніть увагу, що шлях, в який ми розпакували все
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($ product");

product xhprof

Видасть багато інформації з усіх запущених класів:

xhprof_info

6. Графічний звіт :

Також xhprof дозволяє генерувати графічний звіт, яким зрозуміло що й куди стукає. Для цього потрібна установка graphviz .

sudo apt-get install graphviz

graphviz

Використав джерела: джерело1 джерело2

2344 0

Відгуки

Поки немає жодного відгуку. Станьте першим!
Тільки авторизовані користувачі можуть залишати відгуки Вхід

Схожі статті

Створити та завантажити CSV на PHP

Розглянемо можливість швидкого створення CSV файлу з автоматичним скачуванням файлу. Розглянемо формування, роздільники та header для можливості завантажити файл.

Шаблони ImageCMS 4.10-4.12.1

Останні шаблони від ImageCMS 4.12, для завантаження потрібна авторизація.