如何同时调用两个api而不等待第一个api的响应?


how can i call two api's together at same time without waiting for response from first?

我正在制作一个搜索小部件。当我搜索我从2 api的结果一个来自yelp,另一个来自其他来源。但是这个过程需要更长的时间

$dataProvider = SearchUtil::locallookup($for, $near); //local api
$content=SearchUtil::yelplookup($for,$near);    //yelp api
$array=array_merge($dataProvider,$content);

有什么办法,我可以调用这两个api在一起吗?我不希望yelp API在第一个API给出结果后被调用。我想把他们俩叫到一起。

这是可能的,但是您必须重写locallookup和yellookup,并将它们一起绑定到cURL multi_exec上下文中。默认情况下,cURL是同步运行的。在您的情况下,您希望它在多个数据集上异步运行,最好的方法是在multi_exec上下文中同时运行两个通道。

本页更多信息:http://php.net/manual/fr/function.curl-multi-exec.php .

一旦您使用了curl_multi_exec(),您将能够使用第二个参数(将引用更改为true或false)跟踪调用集的状态,并且从那里,您还可以使用curl_multi_getcontent()获得每个通道的内容。

我得到了一些结果。

http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/

https://github.com/petewarden/ParallelCurl

也许这对别人会有用。