我有一个api,需要在1个foreach循环中多次调用,而且我一直在做的方式是定义api url并解析循环内部的信息,因此它被一遍又一遍地调用直到循环结束,但我想知道是否有另一种方式来处理这样的事情。例如,如果我有一个api,从大约50个状态的状态获取信息,我把它放在foreach循环中,它将循环所有50次,这将使结果加载非常慢,我这样做是否正确?如果没有,我该如何处理这样的事情?
以下是我尝试使用此功能的示例。
//Theses are the states
$z_state_abrev = zillow_state_abrev();
//this is the foreach loop.
foreach($z_state_abrev as $states){
$zillow_id = 'X1-ZWz1bp6dndxfd7_75222';
$xml = file_get_contents('http://www.zillow.com/webservice/GetRateSummary.htm?zws-id='.$zillow_id.'&state='.$states.'');
$zinfo_rates = simplexml_load_string($xml);
foreach($zinfo_rates->response as $rates){
dpr($rates->today->rate[0]);
$zinfo_rates .= $rates->today->rate[0];
}
}
答案 0 :(得分:0)
这是一个memcache是我能想到的最好的选择
http://php.net/manual/en/book.memcache.php
您的file_get_contents的结果存储在内存缓存中,后续调用将从缓存中提取。它的第一次运行速度很慢,但每次调用后都会快得多。
它会增加您的复杂性,但要记住Web开发的第二条规则,通常是缓存和缓存。
答案 1 :(得分:0)
如果API没有为您提供在一个请求中获取多个数据的方法,那么您就不幸了。
要加快通话速度,请查看curl_multi
(或实现它的请求库)以并行方式而不是串行方式进行呼叫。