以并行方式使用PHP查询API

Avi*_*ram 0 php api parallel-processing curl

我通过使用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>
Run Code Online (Sandbox Code Playgroud)

总结果(出现在返回的xml [上面]中)最多可以包含1,000个结果,并且在大多数情况下,我通常每个查询有1,000个结果,所以我基本上必须调用API 40次(即25个结果 -每次通话×40次通话= 1,000次结果).每次调用,我都会更改API 启动参数并将其增加25(即0,25,50,...,975).

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

Dav*_*dom 5

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

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