Есть ли AOP для Yii 2?

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

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

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

...

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

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

Есть ли реализация шаблона АОП для Yii 2?

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

3

Решение

Я обычно использую логирование чтобы профилировать мой код.

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

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

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

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;
}

Я также нашел Профилирование производительности в документах, но я не пробовал ни одно из решений.

4

Другие решения

Других решений пока нет …