我能以某种方式同时执行2/5/10/100 GET请求,而不是一个接一个地执行吗?

时间:2019-04-20 06:35:07

标签: php

想象一下我具有以下功能:

public function getSight() {
    $ids = array(1,2);
    $get1 = file_get_contents("https://maps.googleapis.com/maps/api/place/details/json?placeid=" . $ids[0] . "&key=");
    $get2 = file_get_contents("https://maps.googleapis.com/maps/api/place/details/json?placeid=" . $ids[1] . "&key=");
}

我很好奇,与只有1个GET请求的同一个函数相比,该函数执行所需的时间是原来的两倍吗?如果我在数组中有10个id并且我想运行10个GET请求,它将运行慢10倍怎么办?有什么方法可以同时执行这些GET请求,而不是一个接一个地执行?

我之所以这样问,是因为为了从Google Places API中获取有关某个特定地点的信息,您必须使用该地点的ID进行GET请求,但是我认为该API不允许我获取多个放置在单个GET请求中,因此我必须执行与将ID保存在数据库中一样多的GET请求。当然,有一种方法可以有效地做到这一点。

1 个答案:

答案 0 :(得分:2)

也许不使用file_get_contents,但据我所知,您可以通过curl_multi_init来做到这一点:

https://php.net/manual/en/function.curl-multi-init.php

如果您的请求之一失败或花费很长时间,则使用file_get_contents,整个脚本将很慢。我建议您也设置一些超时值。