0

New Relic レポートに基づくと、時間の約 70% が によって消費されたリクエストの処理に費やされましたCInlineAction::runWithParams。実際、Controller::action()総時間の 20% 未満しかかかりませんでした。

最初は、ウェブサーバーの代わりにリクエストを書き換えるために使用したためかもしれないと思ったurlManagerので、書き換え部分をウェブサーバーで処理し、urlManager構成ファイルで構成全体を無効にしました。

Xdebug が提供する情報に基づくと、まだ大きな違いはありません。

CInlineAction::runWithParamsその量のプロセスがかかるのが自然なのか、それとも構成に問題があるのか​​ を尋ねたかっただけです。

ありがとう。

4

1 に答える 1

1

New Relic がそのメソッドに多くの時間を費やしたと報告する理由はよくわかりませんが、構成に問題があるとは思いません。CInlineActionYii は、インライン アクション (つまり、関数としてインラインコントローラーで定義されたアクションaction...、したがって名前)への呼び出しごとに新しいオブジェクトを作成します。次にrunWithParams、現在要求されているアクションを実行するために呼び出されます。

したがって、そのメソッドへの多くの呼び出しが見られるのはごく自然なことです。そのメソッド内の唯一の疑わしい点は、実際にコントローラー メソッドを呼び出すためにリフレクションが使用されていることです。しかし、これは実行時間に劇的な影響を与えるべきではありません。したがって、私はおそらく、New Relic の測定方法のせいだと思います。

本当にそれを追い詰めたい場合はecho microtime()、そのメソッドの各行の前にいくつか追加して、サイクルがどこに行くのかを調べることができます.

于 2013-04-14T20:10:41.790 に答える