Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php进行多个api调用并合并json结果_Php_Json_Database_Api - Fatal编程技术网

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

php进行多个api调用并合并json结果,php,json,database,api,Php,Json,Database,Api,我已经找到了一些关于合并JSON数据的方法的主题,但与我正在尝试做的事情完全不同。我从中请求数据的API的上限是每次从其数据库中获取1000个结果。如果我从今天开始搜索到一年后,我可以得到1000个结果。但我并没有得到所有的结果。与他们的技术人员交谈时,他们建议我定制多个API请求,以连续每30天提取1000个API请求,然后合并它们。我不知道该怎么做 请求: // Get date + 30 days to use in the request: $endDate = date('Y-m-d'

我已经找到了一些关于合并JSON数据的方法的主题,但与我正在尝试做的事情完全不同。我从中请求数据的API的上限是每次从其数据库中获取1000个结果。如果我从今天开始搜索到一年后,我可以得到1000个结果。但我并没有得到所有的结果。与他们的技术人员交谈时,他们建议我定制多个API请求,以连续每30天提取1000个API请求,然后合并它们。我不知道该怎么做

请求:

// 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个月的假期。问题是如何进行这些调用,然后合并返回的数据。它的格式完全相同,并且都被放在同一个数据库中。谢谢你的洞察力

更新:我可以使用

$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字节


因此,通过这种方式,我可以从API获得的最大记录数似乎是120天。我正在寻找一个完整的日历年。

页面参数如何,?参数results_per_pageAPI提供分页。因此,不需要1000个后续请求,只需迭代生成的页面列表,每个页面列表包含1000个条目?您可以在这里查看:您是否想过每次只解析json并推送到数据库?通过将它们推送到数据库而不删除旧记录,您将有效地合并它们。他们正在寻找一个1-1000作为文件阅读和确认与他们的技术。如果你想提供25个,50个,100个分页的结果,那么这就是了。但是,每个请求可以提取的总数量限制为1000。