Я хочу знать, сколько времени выполняется каждое действие. Самый простой / правильный способ — использовать АОП.
Я хотел бы иметь что-то вроде этого:
/**
* @FLOW3\Before("method(.*->action.*())")
*/
public function markFirstTimeTag() {
// Do something here.
}
...
/**
* @FLOW3\After("method(.*->action.*())")
*/
public function markSecondTimeTag() {
// Do something here.
}
Я читал о FLOW3 и этот каркас мне понравился. Но это сама структура с полным стеком.
Есть ли реализация шаблона АОП для Yii 2?
Буду очень признателен за информацию. Спасибо всем.
Я обычно использую логирование чтобы профилировать мой код.
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;
}
Я также нашел Профилирование производительности в документах, но я не пробовал ни одно из решений.
Других решений пока нет …