2016-07-01 11 views
3

Ich möchte wissen, wie viel Zeit jede Aktion ausgeführt wird. Der einfachste/korrekte Weg wäre die Verwendung von AOP.Gibt es AOP für Yii 2?

Ich mag so etwas haben:

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

... 

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

Ich las über die FLOW3 und diesen Rahmen, den ich mochte. Aber das ist ein Full-Stack-Framework selbst.

Gibt es die Implementierung von AOP-Muster für Yii 2?

Ich wäre sehr dankbar für die Informationen. Dank an alle.

Antwort

4

Normalerweise verwende ich Logging, um meinen Code zu profilieren.

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

Diese Ablaufverfolgung kann im Abschnitt Protokolle der Debugleiste gefunden werden.

Dies könnte mit beforeAction() und afterAction() (nicht getestet)

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

Ich fand auch Performance Profiling in der Dokumentation in Kombination verwendet werden, aber ich habe keine der Lösungen ausprobiert.

+0

Vielen Dank für Ihre Antwort! Ich werde es versuchen. –

+0

Hast du es zur Arbeit bekommen? –

+0

Ja, tat ich. Vielen Dank für Ihre Antwort. –