从Javascript中异步调用Magento时出现随机错误
我目前正在Magento上构建一个扩展,其中的一部分是允许其他站点从我的扩展中获取信息的API。这些调用将是跨源的,但我现在不担心身份验证,使得跨源资源共享更容易设置。从Javascript中异步调用Magento时出现随机错误
我打电话的混合使用CSS,HTML,JSON,有时使用API的图像。每当我这样调用异步时,由于每次调用的随机错误,大约有5%的失败几率。下面是我收到的错误列表:
- 500服务器错误:只是一般的服务器错误,可能是很多事情
- 404错误:我猜路由器没有正确加载
- 原点空:“访问控制允许来源不允许原始位置”。这是由于服务器未到达将我的源头标头设置为*的部分。
- 空字符串:有时它可以工作,但只是返回一个空字符串,而不是我试图抓取的资产。
- 引发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代码进行潜水和断点时,它似乎在每个错误的随机部分中断裂。
如果您有任何我应该寻找的原因,将不胜感激。谢谢!
这是在黑暗中拍摄的照片,但这些错误听起来像配置对象偶尔未能完全加载。这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是你的朋友。您可以尝试在本地安装上关闭缓存,或切换到内存缓存后端而不是磁盘后端。如果你的问题是我在这些文章中描述的问题,那么这应该可以缓解一些问题。最后,您总是可以构建您的异步解决方案,以便任何一个调用的成功或失败都不会发生,无论您尝试做什么。
祝你好运。
认为这可能是这种情况。感谢文章,他们写得很好。现在我知道这些错误是Magento固有的,而且我们的产品环境似乎是缓解这些错误的理想选择,所以我可以继续前进,并在设计我的请求时牢记这一点。真棒! Alan Storm,你是,现在仍然是一位绅士和学者。 – stolksdorf 2012-03-22 14:36:11