如何在不等待第一次响应的情况下同时召唤两个api?

时间:2013-04-05 10:01:00

标签: php api fork pcntl

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

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

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

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

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

此页面上的更多信息:http://php.net/manual/fr/function.curl-multi-exec.php

一旦你curl_multi_exec(),你将能够使用第二个参数(将被引用 - 更改为true或false)跟踪调用集的状态,并从那里,你也将能够使用curl_multi_getcontent()获取每个频道的内容。

答案 1 :(得分:1)