2012-01-09 11 views
0

私はcURL(GET)を使用してAPIをクエリしていますが、APIは呼び出しごとに25個の結果しか得られません(難しい制限です。私のじゃない)。PHPでAPIを並列にクエリする

結果は次のようになります。最大1,000の結果を、含めることができます([上記]返されたXMLに表示されます)

<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> 

合計の結果、ほとんどの場合のように、私は通常、クエリ1,000の結果を持っていますだから、私は基本的にAPIを40回(すなわち呼出しごとに25回の結果×40コール= 1,000の結果)呼ぶ必要があります。すべての呼び出しで、API の開始パラメータを変更し、値を25ずつ増やします(0,25,50、...、975)。

私は現在同期メソッド(私はcurl_exec()を使用して、GETコマンドを1つ1つforループで実行しています)を呼び出しているので、この全プロセスは完了するまでに8秒かかります。並行してAPIを呼び出し、これらの結果をより速く得る効率的で高速な方法はありますか?ありがとう。

答えて

5

curl_multi_exec()で複数のa-synchronous cURL呼び出しを実行できます。これにより、複数のコールを同時に実行することができます。

同じサーバーに複数回クエリを実行する場合、同時要求数と効率比の上限があります。私は多くの研究や研究の後でそれを読んでいることを覚えていると確信しています。Facebookは、この制限は3から4の同時リクエストの間であったと結論付けましたが、私が想像しているように参照を見つけることができません。これはあなたが使用していたサーバーとクライアントに依存するので、本当に私はあなたがそれを吸うと見なければならないと言います。

+1

吸い込んで見ますか?北極モンキーズファン? :)ありがとう、私は今それを試して、それが役立つかどうかを確認します – Aviram

+0

**更新:**それは働いた。今度は、すべての結果を得るのに1秒もかかりません。ありがとう! – Aviram

関連する問題