Spec-Zone.ru › Yii 1.1

CProfileLogRoute

Пакет system.logging
Наследование класс CProfileLogRoute » CWebLogRoute » CLogRoute » CComponent
С момента 1.0
Исходный код framework/logging/CProfileLogRoute.php
CProfileLogRoute отображает результаты профилирования на веб-странице.

Профилирование выполняется с помощью вызовов YiiBase::beginProfile() и YiiBase::endProfile(), которые отмечают начало и конец блока кода.

CProfileLogRoute поддерживает два типа отчетов, устанавливая свойство report:
  • summary: список времени выполнения каждого отмеченного блока кода
  • callstack: список отмеченных блоков кода в иерархическом представлении, отражающем порядок их вызовов.

Свойства

Свойство Тип Описание Определено в
categories mixed массив категорий или строковый список, разделённый запятыми или пробелами. CLogRoute
collapsedInFireBug boolean будет ли журнал сжат по умолчанию в Firebug. CWebLogRoute
enabled boolean включён ли данный маршрут журнала. CLogRoute
except mixed массив категорий или строковый список, разделённый запятыми или пробелами, которые исключаются из журналов. CLogRoute
filter mixed дополнительный фильтр (например, CLogFilter), который можно применить к сообщениям журнала. CLogRoute
groupByToken boolean объединять ли результаты по токенам профилирования. CProfileLogRoute
ignoreAjaxInFireBug boolean должен ли журнал игнорироваться в FireBug для AJAX-запросов. CWebLogRoute
ignoreFlashInFireBug boolean должен ли журнал игнорироваться в FireBug для вызовов Flash/Flex. CWebLogRoute
levels string список уровней, разделённых запятыми или пробелами. CLogRoute
logs array журналы, собранные до сих пор этим маршрутом журнала. CLogRoute
report string тип отчета о профилировании для отображения. CProfileLogRoute
showInFireBug boolean отображать ли журнал в FireBug вместо окна браузера. CWebLogRoute

Публичные методы

Метод Описание Определено в
__call() Вызывает метод, который не является методом класса. CComponent
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства нулевым. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в значение null. CComponent
asa() Возвращает объект поведения по имени. CComponent
attachBehavior() Присоединяет поведение к этому компоненту. CComponent
attachBehaviors() Присоединяет список поведений к компоненту. CComponent
attachEventHandler() Присоединяет обработчик событий к событию. CComponent
canGetProperty() Определяет, можно ли считать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
collectLogs() Извлекает отфильтрованные сообщения журнала из логгера для дальнейшей обработки. CLogRoute
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующего обработчика событий. CComponent
disableBehavior() Отключает присоединённое поведение. CComponent
disableBehaviors() Отключает все присоединённые поведения. CComponent
enableBehavior() Включает присоединённое поведение. CComponent
enableBehaviors() Включает все присоединённые поведения. CComponent
evaluateExpression() Вычисляет выражение PHP или обратный вызов в контексте этого компонента. CComponent
getEventHandlers() Возвращает список присоединённых обработчиков событий для события. CComponent
getReport() Возвращает тип отчета о профилировании для отображения. По умолчанию 'summary'. CProfileLogRoute
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, имеются ли присоединённые обработчики для указанного события. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
init() Инициализирует маршрут. CProfileLogRoute
processLogs() Отображает сообщения журнала. CProfileLogRoute
raiseEvent() Вызывает событие. CComponent
setReport() Устанавливает тип отчета о профилировании для отображения. Допустимые значения 'summary' и 'callstack'. CProfileLogRoute

Защищенные методы

Метод Описание Определено в
aggregateResult() Агрегирует результат отчета. CProfileLogRoute
displayCallstack() Отображает стек вызовов профилируемых процедур для отображения. CProfileLogRoute
displaySummary() Отображает сводный отчет о результатах профилирования. CProfileLogRoute
formatLogMessage() Форматирует сообщение журнала, учитывая различные поля. CLogRoute
render() Отображает представление. CWebLogRoute

Подробное описание свойств

groupByToken свойство

public boolean $groupByToken;

указывающее, нужно ли агрегировать результаты по маркерам профилирования. Если false, результаты будут агрегированы по категориям. По умолчанию true. Обратите внимание, что это свойство влияет только на сводный отчет, который включен, когда report равен 'summary'.

report свойство

public string getReport()
public void setReport(string $value)

тип отчета профилирования для отображения. По умолчанию 'summary'.

Подробное описание методов

aggregateResult() метод

protected array aggregateResult(array $result, float $delta)
$result массив результат журнала для данного блока кода
$delta float время, затраченное на данный блок кода
{return} массив
Исходный код: framework/logging/CProfileLogRoute.php#194 (показать)
protected function aggregateResult($result,$delta)
{
    list(
$token,$calls,$min,$max,$total)=$result;
    if(
$delta<$min)
        
$min=$delta;
    elseif(
$delta>$max)
        
$max=$delta;
    
$calls++;
    
$total+=$delta;
    return array(
$token,$calls,$min,$max,$total);
}

Агрегирует результат отчета.

displayCallstack() метод

protected void displayCallstack(array $logs)
$logs массив список журналов
Исходный код: framework/logging/CProfileLogRoute.php#94 (показать)
protected function displayCallstack($logs)
{
    
$stack=array();
    
$results=array();
    
$n=0;
    foreach(
$logs as $log)
    {
        if(
$log[1]!==CLogger::LEVEL_PROFILE)
            continue;
        
$message=$log[0];
        if(!
strncasecmp($message,'begin:',6))
        {
            
$log[0]=substr($message,6);
            
$log[4]=$n;
            
$stack[]=$log;
            
$n++;
        }
        elseif(!
strncasecmp($message,'end:',4))
        {
            
$token=substr($message,4);
            if((
$last=array_pop($stack))!==null && $last[0]===$token)
            {
                
$delta=$log[3]-$last[3];
                
$results[$last[4]]=array($token,$delta,count($stack));
            }
            else
                throw new 
CException(Yii::t('yii','CProfileLogRoute found a mismatching code block "{token}". Make sure the calls to Yii::beginProfile() and Yii::endProfile() be properly nested.',
                    array(
'{token}'=>$token)));
        }
    }
    
// remaining entries should be closed here
    
$now=microtime(true);
    while((
$last=array_pop($stack))!==null)
        
$results[$last[4]]=array($last[0],$now-$last[3],count($stack));
    
ksort($results);
    
$this->render('profile-callstack',$results);
}

Отображает стек вызовов профилируемых процедур для отображения.

displaySummary() метод

protected void displaySummary(array $logs)
$logs массив список журналов
Исходный код: framework/logging/CProfileLogRoute.php#137 (показать)
protected function displaySummary($logs)
{
    
$stack=array();
    
$results=array();
    foreach(
$logs as $log)
    {
        if(
$log[1]!==CLogger::LEVEL_PROFILE)
            continue;
        
$message=$log[0];
        if(!
strncasecmp($message,'begin:',6))
        {
            
$log[0]=substr($message,6);
            
$stack[]=$log;
        }
        elseif(!
strncasecmp($message,'end:',4))
        {
            
$token=substr($message,4);
            if((
$last=array_pop($stack))!==null && $last[0]===$token)
            {
                
$delta=$log[3]-$last[3];
                if(!
$this->groupByToken)
                    
$token=$log[2];
                if(isset(
$results[$token]))
                    
$results[$token]=$this->aggregateResult($results[$token],$delta);
                else
                    
$results[$token]=array($token,1,$delta,$delta,$delta);
            }
            else
                throw new 
CException(Yii::t('yii','CProfileLogRoute found a mismatching code block "{token}". Make sure the calls to Yii::beginProfile() and Yii::endProfile() be properly nested.',
                    array(
'{token}'=>$token)));
        }
    }

    
$now=microtime(true);
    while((
$last=array_pop($stack))!==null)
    {
        
$delta=$now-$last[3];
        
$token=$this->groupByToken ? $last[0] : $last[2];
        if(isset(
$results[$token]))
            
$results[$token]=$this->aggregateResult($results[$token],$delta);
        else
            
$results[$token]=array($token,1,$delta,$delta,$delta);
    }

    
$entries=array_values($results);
    
$func=create_function('$a,$b','return $a[4]<$b[4]?1:0;');
    
usort($entries,$func);

    
$this->render('profile-summary',$entries);
}

Отображает сводный отчет о результатах профилирования.

getReport() метод

public string getReport()
{return} строка тип отчета профилирования для отображения. По умолчанию 'summary'.
Исходный код: framework/logging/CProfileLogRoute.php#55 (показать)
public function getReport()
{
    return 
$this->_report;
}

init() метод

public void init()
Исходный код: framework/logging/CProfileLogRoute.php#47 (показать)
public function init()
{
    
$this->levels=CLogger::LEVEL_PROFILE;
}

Инициализирует маршрут. Этот метод вызывается после создания маршрута менеджером маршрутов.

processLogs() метод

public void processLogs(array $logs)
$logs массив список сообщений журнала
Исходный код: framework/logging/CProfileLogRoute.php#77 (показать)
public function processLogs($logs)
{
    
$app=Yii::app();
    if(!(
$app instanceof CWebApplication) || $app->getRequest()->getIsAjaxRequest())
        return;

    if(
$this->getReport()==='summary')
        
$this->displaySummary($logs);
    else
        
$this->displayCallstack($logs);
}

Отображает сообщения журнала.

setReport() метод

public void setReport(string $value)
$value строка тип отчета профилирования для отображения. Допустимые значения: 'summary' и 'callstack'.
Исходный код: framework/logging/CProfileLogRoute.php#64 (показать)
public function setReport($value)
{
    if(
$value==='summary' || $value==='callstack')
        
$this->_report=$value;
    else
        throw new 
CException(Yii::t('yii','CProfileLogRoute.report "{report}" is invalid. Valid values include "summary" and "callstack".',
            array(
'{report}'=>$value)));
}

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CProfileLogRoute

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API