2016-07-01 6 views
3

Я хочу знать, сколько времени выполняется каждое действие. Самый простой/правильный способ - использовать АОП.Есть ли AOP для Yii 2?

Я хотел бы иметь что-то вроде этого:

/** 
* @FLOW3\Before("method(.*->action.*())") 
*/ 
public function markFirstTimeTag() { 
// Do something here. 
} 

... 

/** 
* @FLOW3\After("method(.*->action.*())") 
*/ 
public function markSecondTimeTag() { 
// Do something here. 
} 

Я читал о FLOW3 и рамок мне понравилась. Но это сама структура полного стека.

Есть ли реализация рисунка AOP для Yii 2?

Я был бы очень признателен за информацию. Спасибо всем.

ответ

4

Обычно я использую Logging для описания моего кода.

Yii::trace('starting some event); 
foreach(..) 
{ 
    ... 
} 
Yii::trace('some event done'); 

Эти трассы можно найти в разделе «Журналы» панели отладки.

Это может быть использован в сочетании с beforeAction() и afterAction() (не проверено)

public function beforeAction($action) 
{ 

    if (!parent::beforeAction($action)) { 
     return false; 
    } 

    Yii::trace($action->id.' started'); 

    return true; // or false to not run the action 
} 

public function afterAction($action, $result) 
{ 
    $result = parent::afterAction($action, $result); 
    Yii::trace($action->id.' ended'); 
    return $result; 
} 

Я также нашел Performance Profiling в документации, но я не пробовал какие-либо из решений.

+0

Большое спасибо за ваш ответ! Я попробую. –

+0

Вы получили его на работу? –

+0

Да, я сделал. Спасибо за ваш ответ. –