Статьи 1С-Битрикс

Решил задачу, рассказал об этом

Как установить и настроить XHProf в битрикс веб окружении

Как установить и настроить XHProf в битрикс веб окружении

Мы не будем говорить о всех плюсах профилировщика xhprof, они и так очевидны. Я расскажу как установить xhprof на виртуальную машину битрикс и уже начать пользоваться. В настоящее время битрикс требует php уже версии 7.0 и выше. Установку будем производить на операционной системе Centos 7

Итак, необходимо выполнить несколько команд.

Первым делом обновим базу yum makecache и установим профилировщик из репозитория sudo yum -y install xhprof

Все, xhprof установлен. Файлы располагаются в директории /usr/share/xhprof/, а конфиг создался в директории /etc/php.d/40-xhprof.ini

Если выполнить команду phpinfo(); мы увидим установленный модуль xhprof

Как пользоваться xhprof bitrix

Чтобы начать пользоваться профилировщиком необходимо в файл /bitrix/php_interface/dbconn.php необходимо добавить некоторый код, который собирает медленные хиты время исполнения которых более 1 сек.

Чтобы увидеть данные, которые собираются необходимо в корень сайта закинуть файлы из репозитория https://github.com/SergeyRock/xhprof-admin и перейти по ссылке /xhprof-admin-master/xhprof_html/xhprof_admin/xhprof_html/index.php Думаю дальше разберетесь


define('ENABLE_XHPROF',true);
if(ENABLE_XHPROF && function_exists('xhprof_enable'))
{
   global $getMicrotime;
   $getMicrotime = function(){
      list($usec,$sec) = explode(' ', microtime());
      return doubleval($usec) + doubleval($sec);
   };
   xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
   $GLOBALS['xhprof_start_time'] = $getMicrotime();
   register_shutdown_function(function() {
      global $getMicrotime;
      $xhprof_data = xhprof_disable();
      $tStart = $GLOBALS['xhprof_start_time'];
      $diffTime = $getMicrotime()-$tStart;
      if($diffTime > 1)
      {
         $timeF = round($diffTime, 3) . "";
         $timeF = str_replace('.', '-', $timeF);
         $client = $_SERVER['SHELL']?'shell':'http';
         $uri = $_SERVER['REQUEST_URI']?$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']:$_SERVER['PHP_SELF'];
         $uri = explode('/', $uri);
         $uri = implode('|',$uri);
         $xhprofCode = $client.'__'.$uri.'__'.$timeF.'s';
         $xhprofCode = preg_replace('#[^a-z0-9_|-]#i', '_', $xhprofCode);
         $pathXhprof = '/usr/share/xhprof';
         include_once $pathXhprof.'/xhprof_lib/utils/xhprof_lib.php';
         include_once $pathXhprof.'/xhprof_lib/utils/xhprof_runs.php';
         $xhprof_runs = new XHProfRuns_Default();
         $run_id = $xhprof_runs->save_run($xhprof_data, $xhprofCode);
      }
   });
}


Возврат к списку