2012-03-21 60 views
1

我目前正在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代碼進行潛水和斷點時,它似乎在每個錯誤的隨機部分中斷裂。

如果您有任何我應該尋找的原因,將不勝感激。謝謝!

回答

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是你的朋友。您可以嘗試在本地安裝上關閉緩存,或切換到內存緩存後端而不是磁盤後端。如果你的問題是我在這些文章中描述的問題,那麼這應該可以緩解一些問題。最後,您總是可以構建您的異步解決方案,以便任何一個調用的成功或失敗都不會發生,無論您嘗試做什麼。

祝你好運。

+0

認爲這可能是這種情況。感謝文章,他們寫得很好。現在我知道這些錯誤是Magento固有的,而且我們的產品環境似乎是緩解這些錯誤的理想選擇,所以我可以繼續前進,並在設計我的請求時牢記這一點。真棒! Alan Storm,你是,現在仍然是一位紳士和學者。 – stolksdorf 2012-03-22 14:36:11

相關問題