Форум 1С-Битрикс

Задавайте свои вопросы и отвечайте на вопросы других участников форума

Страницы: 1
Ответить
Как узнать какие агенты долго выполняются?
 
Сайт часто виснет или тормозит без особых причин. Думаю виновником являются агенты. Но как понять какой агент вызывает зависание сайта?
Как логировать запуск агентов?
 
Для диагностики зависаний необходимо отследить запуск агентов записав время их исполнения в лог
Для этого нужно определить константу  BX_AGENTS_LOG_FUNCTION в init.php
Константа должна содержать название функции, которая будет вызвана до начала исполнения агента и после его исполнения.
Лог будет находиться в корне сайта /agent_log.txt
Код
define('BX_AGENTS_LOG_FUNCTION', 'AgentsLog');
function AgentsLog($arAgent=false, $strOperation=false, $mEvalResult=false, $mEvalReturn=false){
   $strKey = __FUNCTION__.'_start_time';
   if($strOperation == 'start'){
      $GLOBALS[$strKey] = microtime(true);
      L(sprintf('Start: %s [%s], %s, %s', $arAgent['NAME'], strlen($arAgent['MODULE_ID'])?$arAgent['MODULE_ID']:'--nomodule--', $arAgent['AGENT_INTERVAL'], $arAgent['AGENT_INTERVAL']));
   }
   if($strOperation == 'finish' && isset($GLOBALS[$strKey])){
      L(sprintf('[%s] %s', number_format(microtime(true) - $GLOBALS[$strKey], 4, '.', ''), $arAgent['NAME']));
      unset($GLOBALS[$strKey]);
   }
}
function L($Message){
   if (is_array($Message)) {
      $Message = print_r($Message,1);
   }
   $file_path = $_SERVER['DOCUMENT_ROOT'].'/agent_log.txt';
   $handle = fopen($file_path, 'a+');
   @flock($handle, LOCK_EX);
   fwrite($handle, '['.date('d.m.Y H:i:s').'] '.$Message."\r\n");
   @flock($handle, LOCK_UN);
   fclose($handle);
}
Страницы: 1
Ответить
Читают тему (гостей: 1)
Форма ответов
Текст сообщения*
Загрузить файл или картинкуПеретащить с помощью Drag'n'drop
Перетащите файлы
Ничего не найдено
Отправить Отменить