2012-01-09 66 views
0

我使用cURL(GET)查詢API,每個調用API只給出25個結果(這是一個硬性限制,並且我無能爲力,因爲它是不是我的)。用PHP以並行方式查詢API

結果如下所示:

<response v="2"> 
    <query>my nifty query</query> 
    <location>new york, ny</location> 
    <totalresults>920</totalresults> 
    <start>1</start> 
    <end>25</end> 
    <pageNumber>0</pageNumber> 
    <results> 
     <result></result> 
     <result></result> 
     ... 
    </results> 
</response> 

總結果(這出現在[以上]返回的XML)可以包含高達1000分的結果,並在像大多數情況下,我通常有每個查詢1000分的結果,所以我基本上必須調用API 40次(即25次結果 - 每次通話×40次通話= 1,000次結果)。每次通話,我都會更改API 開始參數並將其增加25(即0,25,50,...,975)。

整個過程大約需要8秒鐘完成,因爲我目前以同步方式調用API(我使用curl_exec()在for循環中逐個執行GET命令)。有沒有更高效,更快速的方式以並行方式調用API並更快獲得這些結果?謝謝。

回答

5

您可以使用curl_multi_exec()執行多個a-synchronous cURL調用。這將允許您同時執行多個呼叫。

請注意,多次查詢同一服務器時,併發請求數與效率比存在上限。我確信我記得經過大量研究或者研究後發現,Facebook認爲這個限制是在3到4個併發請求之間,但是我找不到可以想象的參考。這取決於你使用的服務器和客戶端,所以我真的會說你只需要吮吸它就可以看到。

+1

吸了,看看?北極猴子的粉絲? :),謝謝,我現在就試試,看看它是否有幫助 – Aviram 2012-01-09 16:36:53

+0

**更新:**它的工作。現在,我需要不到一秒鐘的時間才能獲得所有結果,謝謝! – Aviram 2012-01-09 17:29:11