2015-05-19 89 views
0

這是一種SE體系結構問題。以下是我們正在實施的系統的模型。如何處理耗時的Ajax請求

mockup

以上是我們處理數據需要使用AJAX的方式。問題是,如果調用在salesforce部分中需要花費太多時間來處理,那麼API管理器會引發超時並且網站會收到響應,這是API管理器拋出的超時錯誤。

我想實現的Thew方法是將請求發送到服務器,然後API管理器會發送一個在salesforce部分中處理的大事務的ID。當前端收到ID時,我將使用具有給定ID的單獨Web服務輪詢API管理器,以確定事務是否成功完成。我需要定期致電,因爲執行時間對我來說是未知的!

舉個例子說,在得到ID之後,我會每隔5秒發一個ajax調用來知道事務是否結束。

這是一個明智的方法來解決我面臨的問題。由於我無法控制任何其他部分,我想知道我的方法是否更好。

回答

1

感覺很明智。

  1. 在API管理器中實現某種工作隊列。它存在幾種可以很好擴展的即用型解決方案(如齒輪工)。

  2. 添加一個web服務的API管理器,使得有可能得到的工作隊列

作業狀態......然後你能...

3。嘗試刪除模型中的一個系統(它包含許多可能的故障點)。客戶端(Web應用程序)可以直接與API管理器通信嗎?或者可以在工人隊列上可以在WordPress

4.添加WebSocket的支持,通過Ajax功能提供的網絡服務器實施,其方式比輪詢:)

+0

的Web應用程序不能調用更多的真棒直接發送給API經理!相反,它會經過一個PHP層,然後轉到API管理器。事情是,保存功能是耗時的部分,需要在銷售人員部分進行。我使用ajax將數據發送到服務器,然後啓動進程。這是因爲保存需要時間API管理器拋出超時異常。如果你能解釋網絡套接字的事情,我將不勝感激,因爲我從來沒有實現過網絡套接字! –

+0

Websockets使服務器可以將數據推送到客戶端/瀏覽器。當需要即時反饋是必要的時候使用的技術,但普通的請求/響應過程不是。在你的情況下,我猜測它並不重要。 html5rocks.com/en/tutorials/websockets/basics – xCander