Оптимизация скорости путем отключения модуля mage_reports?

magento.stackexchange https://magento.stackexchange.com/questions/160

  •  16-10-2019
  •  | 
  •  

Вопрос

Размышляя об оптимизации скорости 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 как зависимость.

Я деактивировал его в тестовом магазине, и все, кажется, работает нормально.

Вопрос => Правда ли, что помимо потери отчетов данных, конечно, магазин может хорошо работать без этого модуля?

Или есть какие -либо моменты, на которых мой магазин разорвет, когда этот модуль не активирован?

Это было полезно?

Решение

Ваш магазин может работать, это правда, если у вас есть графики панелей администратора, также отключены. На самом деле, хотя все это зависит от программистов и того, как они обрабатывают ситуации с отключенными модулями. Проблема в том, что 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-object Фатальная ошибка PHP.

В то время как команда Magento выполнила свою работу (ну, на самом деле они этого не сделали, если вы включите диаграммы, например, ваш администратор должен сломать на панели панели), вы не можете знать, как сторонние расширения будут справляться с этими ситуациями, если они попытаются использовать Reports модуль.

Так что, если вы убедитесь, что справляетесь со всеми ситуациями, где reports называются, тогда вы можете отключить его. В противном случае, лучше не делать этого.

Другие советы

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

Вся его стоимость обработки поступает от наблюдателей. И, вероятно, работа Xeon, но это не актуально здесь. Если вы можете остановить наблюдение за событиями, вы можете устранить накладные расходы.

Наивный способ будет отредактировать config.xml и прокомментировать их. Не делай этого.

Правильным способом будет создание своего собственного модуля, который зависит от MAGE_REPORTS и просто иметь config.xml. В этом определяйте фронт -тег и копируйте во всех наблюдателях из mage_reports. Затем измените событие, которое они наблюдают на какую -то чушь, а не реальное событие, которое никогда не будет уволен. Затем добавьте тег под названным типом «Наблюдатель» со значением отключенного.

Если вы посмотрите на диспетчерское событие в App.php, вы сможете увидеть, что оно работает. Вы переписываете их с инвалидом наблюдателя. Ничто не называется, и ничто не ломается!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top