2012-12-23 37 views
0

我有一個應用程序通過jQuery.post向PHP發送多個請求,每個請求都有不同的參數。 PHP腳本是來自eBay API的數據請求,需要1-3秒才能完成。來自客戶端的AJAX請求會連續發送出去,然後在完成或出錯後立即再次請求。從1個客戶端到PHP的多個AJAX請求

開始發生的事情是,PHP首先執行最舊的請求,然後繼續執行最新的請求。所以請求1在1-3秒內完成,但請求25超過12-20秒。

可以採取哪些措施來緩解這些問題?

編輯:不一次發送這麼多的請求不是一個選項。每個請求都要求從eBay獲得具體信息,並且需要儘可能接近實時。

EDIT_2:我知道PHP按接收的順序處理請求,並且不會認爲這是不正確的行爲。我的問題是,是否可以繞過這種行爲並使PHP並行而不是串行地執行腳本。

+0

不要一次發送如此多的Ajax請求? –

+0

誰在執行什麼? PHP正在執行請求或Javascript? – dbf

+0

我希望php/web服務器按照收到的順序來處理請求,但你似乎暗示這是不正確的。什麼是正確的?我有一種感覺,你會怎麼說......但也許你應該畫一個時間表來讓事情變得清晰。 – goat

回答

0

(恕我直言)你唯一能做的就是儘量消除額外的請求。例如,如果ajax請求只是獲取拍賣剩餘多少時間,則請求一次,並基於返回的數據構建計時器,這樣您就不必一直髮送請求。儘可能地在箱子外面思考。如果您可以一次獲取數據並在您的端模擬eBay的行爲,則可以保存請求。另外,看看ajax推動引擎。您可能可以將某些數據推送到您的應用程序,而不是將其拉出。所以如果一個項目已經結束,你可以得到這些信息而不用循環Ajax請求。

+0

我要求從eBay新上市的物品。所以我無法模擬,因爲每個請求都是不同的搜索查詢。你能推薦一個ajax推動引擎嗎? –

+0

做了一些研究..似乎ebay還沒有。其他選項可以將負載分離到多個服務器和php引擎。你可以嘗試使用不同的引擎分離負載,所以執行一些使用PHP,一些使用rails,一些使用python等......這樣你就可以模擬你正在尋找的並行行爲。你使用哪些API? – Charlie

相關問題