从Javascript对Magento进行异步调用时出现随机错误

时间:2012-03-21 21:53:31

标签: ajax zend-framework magento jquery

我目前正在Magento之上构建一个扩展,其中一部分是一个允许其他网站从我的扩展程序中获取信息的API。这些调用将是Cross-origin,但我现在不担心身份验证,使得跨源资源共享更容易设置。

我正在使用api调用css,html,json和有时图像的混合物。每当我异步地进行这些呼叫时,由于每次呼叫的随机错误,大约有5%的失败几率。这是我收到的错误列表:

  • 500服务器错误:只是一般服务器错误,可能是很多事情
  • 404错误:我猜测路由器没有正确加载
  • Origin Null :“Access-Control-Allow-Origin”不允许“原点为null”。这是由于服务器未到达我将原始允许标题设置为*。
  • 的部分
  • 空字符串:有时它可以正常工作,但只返回一个空字符串,而不是我想要抓取的资产。
  • 抛出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 个答案:

答案 0 :(得分:3)

这是在黑暗中拍摄的,但这些错误听起来像配置对象偶尔无法完全加载。 500错误可能是任何事情(检查你的apache日志;同样,在开发人员模式下运行Magento,其中display_error ini设置为1),404错误可能是由于前端部分无法加载而引起的,并且抛出了Magento错误使得TBT_RewardsCoreCustomer Sweet Tooth模块无法加载到您的配置中。

I wrote之前在longer series文章中关于此问题,但简短版本是:有时如果Magento从磁盘和/或缓存加载其配置文件时遇到问题(默认缓存是磁盘) ),整个部分可能会丢失。我知道,开箱即用的Windows机器曾经存在严重的Apache / PHP文件锁定问题(不知道是否仍然如此)。我的猜测是你的本地机器无法处理你正在进行的异步调用的数量,缓存无法加载,你得到你的错误/奇怪的行为。

没有简单的解决方案。就个人而言,我会将您的开发环境切换到某种类型的* nix安装,因为无论如何都要将Magento部署到其中。 Virtual Box和Ubuntu是你的朋友。您可以尝试在本地安装上关闭缓存,或者切换到内存缓存后端而不是磁盘后端。如果您的问题是我在这些文章中描述的问题,那么这应该可以在某种程度上缓解这些问最后,您始终可以构建您的异步解决方案,以便任何一个调用的成功或失败都不会影响您正在尝试做的任何事情。

祝你好运。