以并行方式使用PHP查询API

时间:2012-01-09 15:50:23

标签: php api curl parallel-processing

我正在使用cURL(GET)查询API,并且API每次调用只给出25个结果(这是一个硬限制,我无能为力,因为它不是我的。)

结果如下:

<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 [上面]中)最多可包含1,000个结果,在大多数情况下,我通常每个查询有1,000个结果,所以我基本上必须调用API 40次(< em>即每次通话25次结果×40次通话= 1,000次结果)。每次通话,我都会更改API start 参数并将其增加25(即0,25,50,...,975)。

整个过程大约需要8秒钟,因为我目前以同步方式调用API(我正在使用curl_exec()执行GET命令,在for循环中逐个执行)。是否有任何有效且更快速的方式以并行方式调用API并更快地获得这些结果?感谢。

1 个答案:

答案 0 :(得分:5)

您可以使用curl_multi_exec()执行多个a-synchronous cURL调用。这将允许您同时执行多个调用。

请注意,在多次查询同一服务器时,并发请求数与效率比存在上限。我确信我记得在经过大量研究或研究之后,Facebook得出结论,这个限制是3到4个并发请求,但我找不到参考,所以我可能已经想到了它。这取决于你使用的服务器和客户端,所以我真的会说你只需要吮吸它并查看。