Как правильно читать теги с двоеточием (<p:id>) в google_merchant.xml в PHP
Способ чтения xml с тегами имеющими двоеточие <p:id>, как в выгрузке в Google Merchant. Использование registerXPathNamespace или обращение к тегу напрямую.
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
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.tgzgzip -d xhprof-0.9.4.tgztar -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. Фронтовая часть выглядит так:
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($xhprof_data, "product");

Выдаст много информации по всем запущенным классам:

6. Графический отчет:
Так же xhprof позволяет генерировать графический отчет, по которому понятно что и куда стучится. Для этого нужна установка graphviz.
sudo apt-get install graphviz

Использовал источники:
Способ чтения xml с тегами имеющими двоеточие <p:id>, как в выгрузке в Google Merchant. Использование registerXPathNamespace или обращение к тегу напрямую.
Разбор JWT HS256 шифрования, расшифровка JWT HS256, сравнение сигнатур sha256 на целостность информации.
Рассмотрим исправление исчезновения пробелов перед переменными в старой версии Twig на php 7.4 не обновляя версию.
Рассмотрим возможность быстрого создания CSV файла с автоматическим скачиванием файла. Рассмотрим формирование, разделители и header для возможности скачать файл.
Последние шаблоны от ImageCMS 4.12, для скачивания нужна авторизация.