php进行多个api调用并合并json结果

时间:2015-02-09 14:14:10

标签: php json database api

我找到了关于合并JSON数据的方法的主题,但没有特别喜欢我正在尝试做的事情。我正在请求数据的API在数据库中一次有1000个结果的上限。如果我在今天的范围内搜索直到一年,我能够将1000个结果拉得很好。虽然我没有得到所有的结果。与他们的技术交流,他们建议我定制多个API请求,连续每30天提取1000个,然后合并它们。我不知道该怎么做。

请求:

// Get date + 30 days to use in the request:
$endDate = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 30 day"));

$url = PROTOCOL . '://'. ENDPOINT . '?api_key='. API_KEY .'&api_secret='. API_SECRET;
$url .= '&aflt_token=K4RrVSQJFt51F2kyFXDZDFlE9igOtuM4';
$url .= '&format=json';
$url .= '&events=T';
$url .= '&race_headings=F';
$url .= '&race_links=F';
$url .= '&include_waiver=F';
$url .= '&page=1';
$url .= '&results_per_page=1000';
$url .= '&start_date=tomorrow';
$url .= '&end_date='.$endDate;
$url .= '&only_partner_races=F';
$url .= '&only_races_with_results=F';
$url .= '&distance_units=K';

$json = file_get_contents($url);
$json_output = json_decode($json);

他们建议我对每个连续的30天期间进行类似的调用,修改:

$url .= '&start_date=tomorrow';
$url .= '&end_date='.$endDate; 

每次下一个30天的时间跨度。实际上,我可以进行6次单独的通话,以获得整整6个月。问题是如何进行这些调用然后合并返回的数据。它们完全相同/格式,并且都被放入同一个数据库中。感谢您的任何见解。

更新:我可以使用

从API合并单独的30天最大结果请求(显然是1000)
$merged_data = array_merge(array($json_output, $json_output2, $json_output3, $json_output4, $json_output5));

但是:在我收到内存错误之前,我可以做的最大请求数似乎有限(只有4个30天的1000个结果):“致命错误:允许的内存大小为67108864字节耗尽(试图在第165行的/home/runraceitadmin/public_html/dev/runsignup.php中分配83个字节“

因此,我可以通过这种方式获得的最大记录数是120天。我希望拉一整个日历年。

0 个答案:

没有答案