4

我正在制作一个搜索小部件。当我搜索时,我从 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。我想同时给他们两个打电话。

有没有办法做到这一点?

4

2 回答 2

1

我得到了一些结果。

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

https://github.com/petewarden/ParallelCurl

可能这对其他人有用..

于 2013-04-05T12:10:04.727 回答
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() 的每个频道。

于 2013-04-05T11:46:29.967 回答