Аналіз навантажених частин Php коду за допомогою xhprof / ~#root -i Аналіз навантажених частин Php коду за допомогою xhprof / ~#root -i Аналіз навантажених частин Php коду за допомогою xhprof / ~#root -i Аналіз навантажених частин Php коду за допомогою xhprof / ~#root -i Аналіз навантажених частин Php коду за допомогою xhprof / ~#root -i Аналіз навантажених частин Php коду за допомогою xhprof / ~#root -i Аналіз навантажених частин Php коду за допомогою xhprof / ~#root -i Аналіз навантажених частин Php коду за допомогою xhprof / ~#root -i
  • RU
  • UA
  • EN
  • Створити інтернет-магазин
  • Документація
  • Блог
    • Unix-подібні ОС
    • Php
    • MySQL
    • JavaScript
    • Менеджери пакетів
    • Docker
    • Seo
  • Допоміжні сервіси
    • Короткі посилання
    • Oбмін переглядами YouTube
  • Вхід
  • Реєстрація
  • Головна
  • Php
  • Аналіз навантажених частин Php коду за допомогою xhprof

Аналіз навантажених частин 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

31 Жовтня 18
1408
0

Відгуки

Ім'я
Електронна пошта
Рейтинг
Відгук

Інші статті з категорії

25 Квітня 2022

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

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

19 Червня 2019

Шаблони ImageCMS 4.10-4.12.1

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

26 Січня 2019

Довге зберігання кошика в інтернет-магазині

Розглянемо варіанти популярних варіантів зберігання товарів у кошику в інтернет-магазині. Позначимо плюси та мінуси таких зберігання. Розглянемо варіанти довгострокового зберігання корзини.

17 Січня 2019

Ключ-ліцензія для ImageCMS 4.9-4.12.1 Pro та Pre

Створення ключа для imageCMS 4.9-4.12.1 Pro та Pre. Для отримання авторизуватися.

07 Грудня 2018

$_SERVER[DOCUMENT_ROOT] у CLI або Cron

При запуску скрипта з консолі немає DOCUMENT_ROOT в $_SERVER. Спробуємо обійти це своїми шляхами, відловити директорію файлу.

18 Липня 2018

Угруповання умов у запиті ORM Propel (condition, combine)

Розберемо можливість об'єднання умов у запиті груп у Propel. Розглянемо приклад фільтрації по полях за допомогою -> condition () і -> combine ().

14 Червня 2018

Авторизація 1С на сайті PHP_AUTH_USER на CentOS apache

Зіткнувся із проблемою авторизації 1с на сайті. Сервер чомусь не приймав від неї параметр PHP_AUTH_USER і PHP_AUTH_PW. Розглянемо докладніше рішення та обхід даних параметрів $_SERVER .

21 Травня 2018

Підключаємо не оголошену таблицю в Propel або Join Custom Table Propel

Метою статті стало приєднання (join) не оголошеної у схемі (schema.xml) таблиці у propel2. Мабуть, рідкісний випадок або просто недостатньо документації по даній Propel ORM.

Категорії

  • Unix-подібні ОС
  • Php
  • MySQL
  • JavaScript
  • Менеджери пакетів
  • Docker
  • Seo

Останні коментарі

Добрый день, Сергей. Я на более новых версиях блют...
root-i
23.02.23
Пробовал на transmart колонке. Ничего из перечисле...
Сергей
20.02.23
HenryMit, может быть
root-i
07.02.23
Неофрейдизм — это… Определение, принципы, представ...
HenryMit
07.02.23

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

Подяка на продовження роботи сайту:
Контакти

Telegram Viber Mail

Пошук по сайту

  • Вхід
  • Реєстрація

Сайт працює на chmod -R