Mage_Reportsモジュールを無効にすることによる速度の最適化?


7

Magentoの速度を最適化することを考えるとき、サイトを高速化するためのキャッシング(PHP、データベース、さらには全ページキャッシュ)のようないくつかの可能性があります。

別の可能性は、実行される処理の量を減らすことです。つまり、ショップで実行されているモジュールの数を減らすことです。

最近、私はMage_Reportsモジュールを非アクティブ化することが可能/安全かどうか疑問に思っています。

これは、ファイルにあるapp/etc/modules/Mage_All.xmlよう

<Mage_Reports>
    <active>true</active>
    <codePool>core</codePool>
    <depends>
        <Mage_Customer/>
        <Mage_Catalog/>
        <Mage_Sales/>
        <Mage_Cms/>
    </depends>
</Mage_Reports>

したがって、コアにバンドルされており、他のいくつかのモジュールに依存しています。

しかし、Mage_Reportsが依存関係にある他のモジュールが表示されません。

テストストアで無効にしたところ、すべて正常に動作しているようです。

質問=>確かに、レポートデータが失われるだけでなく、このモジュールがなくてもストアは正常に実行できますか?

または、このモジュールがアクティブ化されていないときにストアが壊れるポイントはありますか?


2
最近表示された製品はレポートに関連しています
FlorinelChis 2013年

回答:


3

管理パネルのグラフも無効になっている限り、ストアは機能する可能性があります。しかし実際には、プログラマー次第であり、モジュールが無効になっている状況でプログラマーがどのように処理するかです。問題は、Magento 1.xには、その問題を自動的に解決する処理メカニズムがないことです。あなたが見れば

public function getResourceModelInstance($modelClass='', $constructArguments=array())
{
    $factoryName = $this->_getResourceModelFactoryClassName($modelClass);
    if (!$factoryName) {
        return false;
    }
    return $this->getModelInstance($factoryName, $constructArguments);
}

falseモジュールが無効になると戻ります。つまり、すべてMage::getModel('reports/..がなりfalse、その(と想定されている)オブジェクトに対して呼び出そうとするメソッドがCall to a member function on a non-objectphp Fatalエラーをスローすることになります。

Magentoチームは仕事をしましたが(実際にはそうではありませんでした。たとえば、管理者がダッシュボードで中断する必要があるグラフを有効にした場合)、サードパーティの拡張機能がそれらを使用しようとした場合に、これらの状況をどのように処理するかを知ることができません。Reportsモジュール。

したがって、reports呼び出されるすべての状況を確実に処理している場合は、それを無効にすることができます。それ以外の場合は、しないほうがよい。


4
サードパーティの拡張機能では、モジュール構成に<depends>ブロックが必要です。そのため、レポートを有効にしていない場合、モジュールはエラーをスローします。これは-
そうですね...-

2

モジュールを無効にするとどうなるかはわかりませんが、無効にせずに処理の影響を(おそらく)停止する方法はわかります。

その処理コストはすべてオブザーバーから発生します。そしておそらくXeonの仕事ですが、それはここでは関係ありません。イベントの監視を停止できる場合は、オーバーヘッドを排除できます。

素朴な方法は、config.xmlを編集してコメント化することです。それをしないでください。

正しい方法は、Mage_Reportsに依存し、config.xmlのみを持つ独自のモジュールを作成することです。その中で、フロントエンドタグを定義し、Mage_Reportsからすべてのオブザーバーをコピーします。次に、監視しているイベントを、発生しない決して意味のない実際のイベントに変更します。次に、値が無効になっているtypeという名前のオブザーバーの下にタグを追加します。

App.phpでディスパッチイベントを調べると、それが機能していることがわかります。あなたは彼らを無効なオブザーバーで上書きします。何も呼び出されず、何も壊れません!


いいアイデアだね!
mpaepper 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.