想象一下我具有以下功能:
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请求。当然,有一种方法可以有效地做到这一点。
答案 0 :(得分:2)
也许不使用file_get_contents,但据我所知,您可以通过curl_multi_init来做到这一点:
https://php.net/manual/en/function.curl-multi-init.php
如果您的请求之一失败或花费很长时间,则使用file_get_contents,整个脚本将很慢。我建议您也设置一些超时值。