Наблюдатель событий Magento не работает на некоторых машинах

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

Например, у меня есть наблюдатель, который прослушивает событие:

controller_action_postdispatch_adminhtml_process_reindexProcess

Мой код обнаруживает событие и запускает некоторый код. Когда я запускаю процесс переиндексации, мой код выполняется. Когда некоторые другие машины здесь, в офисе, запускают переиндексацию, либо событие не запускается, либо мой наблюдатель не обнаруживает его.

Почему компьютер или пользователь, нажимающий кнопку переиндексации на панели администратора, что-то меняет в том, как события запускаются или наблюдаются?

Я исследовал эту проблему как мог и нашел этот пост.

События не запускаются/или наблюдатель не работает в magento

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

Эта проблема сводит меня с ума. Любая помощь будет принята с благодарностью.


person Nathaniel Wendt    schedule 07.12.2011    source источник


Ответы (2)


Есть много вуду, которые вы могли бы попробовать, но в конце концов вам придется начать с этого.

#File: app/Mage.php

public static function dispatchEvent($name, array $data = array())
{
    Varien_Profiler::start('DISPATCH EVENT:'.$name);
    $result = self::app()->dispatchEvent($name, $data);
    #$result = self::registry('events')->dispatch($name, $data);
    Varien_Profiler::stop('DISPATCH EVENT:'.$name);
    return $result;
}

и отладьте/зарегистрируйте выполнение вашего события, чтобы определить, почему оно не срабатывает в определенных ситуациях.

Конкретный ответ из комментариев

Спасибо! Я смог увидеть, что переиндексация с помощью галочек вызывает другое событие, чем простое нажатие на текст процесса переиндексации. Мучительно долгая ошибка для отладки, но простое решение. Еще раз спасибо! –

person Alan Storm    schedule 07.12.2011
comment
Да неплохо бы поставить Mage::log($name); и просто сравните вывод 2-х компьютеров. - person Jevgeni Smirnov; 07.12.2011
comment
Спасибо! Я смог увидеть, что переиндексация с помощью галочек вызывает другое событие, чем простое нажатие на текст процесса переиндексации. Мучительно долгая ошибка для отладки, но простое решение. Еще раз спасибо! - person Nathaniel Wendt; 09.12.2011

Вы уверены, что у вас одинаковое состояние файла на обоих компьютерах? Может быть, вы забыли передать/зарегистрировать MyFirm_MyModule.xml, и ваш модуль не активен?

Компьютеры используют разные операционные системы? Если вы работаете в Windows, а ваши коллеги в Linux, это может быть проблемой с прописными и строчными буквами в именах модулей.

person Alex    schedule 07.12.2011