Случайные ошибки при асинхронных вызовах Magento из Javascript - PullRequest
1 голос
/ 22 марта 2012

В настоящее время я создаю расширение поверх Magento, частью которого является API, который позволяет другим сайтам получать информацию из моего расширения. Эти вызовы будут происходить из разных источников, но сейчас я не беспокоюсь об аутентификации, что упрощает настройку совместного использования ресурсов из разных источников.

Я называю смесь CSS, HTML, JSON, а иногда и изображений, используя API. Всякий раз, когда я делаю эти вызовы асинхронно, вероятность сбоя составляет около 5% из-за случайной ошибки для каждого вызова. Вот список ошибок, которые я получаю:

  • 500 Ошибка сервера : Просто общая ошибка сервера, может быть много вещей
  • 404 Ошибка : Я предполагаю, что маршрутизатор не загружен должным образом
  • Исходное значение NULL : «Исходное значение NULL не разрешено Access-Control-Allow-Origin». Это вызвано тем, что сервер не достигает той части, где я установил разрешенный заголовок моего источника на *.
  • Пустая строка : Иногда это работает, но просто возвращает пустую строку вместо ресурса, который я пытаюсь получить.
  • Ошибка Throw Magento Пример!
Module "TBT_RewardsCoreSpending" requires module "TBT_RewardsCoreCustomer".
Uncaught SyntaxError: Unexpected token _sortModuleDepends(Array)
#2 C:\Users\Skaught\ST\me11110\app\code\core\Mage\Core\Model\Config.php(315): Mage_Core_Model_Config->_loadDeclaredModules()
#3 C:\Users\Skaught\ST\me11110\app\code\core\Mage\Core\Model\App.php(409): Mage_Core_Model_Config->loadModules()
#4 C:\Users\Skaught\ST\me11110\app\code\core\Mage\Core\Model\App.php(338): Mage_Core_Model_App->_initModules()
#5 C:\Users\Skaught\ST\me11110\app\Mage.php(640): Mage_Core_Model_App->run(Array)
#6 C:\Users\Skaught\ST\me11110\index.php(77): Mage::run('', 'store')
#7 {main}

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

Если у вас есть какое-либо понимание того, где я должен искать причину этого, буду очень признателен. Спасибо!

1 Ответ

3 голосов
/ 22 марта 2012

Это выстрел в темноте, но эти ошибки звучат так, будто объект конфигурации иногда не загружается полностью. 500 ошибок могут быть любыми (проверьте ваши журналы apache; также запустите Magento в режиме разработчика с параметром display_error ini 1), ошибки 404 могут быть вызваны тем, что секция внешнего интерфейса не загружается, а брошенная ошибка Magento вызывает похоже, что модуль TBT_RewardsCoreCustomer Sweet Tooth не удалось загрузить в вашу конфигурацию.

Я уже писал об этой проблеме ранее в более длинной серии статей, но короткая версия такова: Иногда, если у Magento возникают проблемы с загрузкой файлов конфигурации с диска и / или из кэша ( и кеш по умолчанию - диск), целые разделы могут отсутствовать. Я знаю, что на компьютерах с Windows раньше были серьезные проблемы с блокировкой файлов в Apache / PHP (не знаю, так ли это до сих пор). Я предполагаю, что ваш локальный компьютер не может обработать количество асинхронных вызовов, которые вы делаете, кэш не загружается, и вы получаете свои ошибки / странное поведение.

Нет простого решения. Лично я бы переключил вашу среду разработки на какую-то установку * nix, так как это то, для чего Magento будет развернут в любом случае. Virtual Box и Ubuntu - ваши друзья. Вы можете попробовать отключить кеш при локальной установке или переключиться на внутреннюю кеш-память вместо серверной. Если ваша проблема - та, которую я описал в этих статьях, это должно несколько облегчить проблему. Наконец, вы всегда можете спроектировать асинхронное решение таким образом, чтобы успех или неудача любого вызова не мешали тому, что вы пытаетесь сделать.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...