【发布时间】:2013-01-03 13:36:23
【问题描述】:
如果我在 foreach 循环中使用 curl,这是不好的做法还是会变慢?
我打算有一个自动完成输入字段,输入中的查询将被发送到 API 调用。
我从某个链接获取了一个 ID(即:http://api.linke1.com/names)
foreach($json as j){
$id = $j->id; //from http://api.linke1.com/names
$url = "https://api.site/{$id}/photos";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$output = curl_exec($ch);
curl_close($ch);
$jsonDecode = json_decode($output);
$results = $jsonDecode->results;
foreach($results as $result)
{
$photoURL= $result->photo->url; //from https://api.site/{$id}/photos
}
}
所以每次我输入名字时,它都会进入 foreach 从http://api.linke1.com/names 中搜索一个 id,然后它会从另一个链接中查找照片 url。我想输出一个数组列表,所以最终我会有一个数据列表来输出显示名称、照片等信息...
这是否会显着减慢,因为在输入字段中键入的每个字母都会通过这个 foreach 循环运行。有没有更简单的方法?
谢谢!
【问题讨论】:
-
有没有办法在一个请求中检索所有这些信息?作为一般规则,在循环中执行昂贵的操作(并且通过互联网请求数据绝对是一个昂贵的操作)是一个坏主意。
-
您问题中的循环看起来是多余的。您最好通过不使用外部 foreach 来优化它。内部 foreach 看起来也很可疑,您可能想在第一次迭代中将其破坏。除此之外,请只询问具体问题而不是假设问题。是的,它可能是错误的,但是现在看起来,它甚至不起作用。先让它工作,然后优化它。
-
你想到了什么?
标签: php optimization curl