【发布时间】:2019-01-30 20:21:46
【问题描述】:
我正在开发一个 Web 应用程序,它遍历 API 结果以插入 MySQL 数据库。
我使用的 API 限制每次调用最多返回 500 条记录。
他们有一个参数,您可以在其中选择从哪个“页面”返回结果,因此对于 1504(当前记录数)记录,我可以调用第 2 页并返回 500-999 的结果。
我充其量只是半新手,这是我第一次尝试使用 API...我正在努力弄清楚如何收集所有 1504 个结果。
API 文档是:https://developer.trademe.co.nz/api-reference/search-methods/rental-search/
我可以使用“page”参数来选择我想要的结果页面。
$url = "https://api.tmsandbox.co.nz/v1/Search/Property/Rental.json";
$headr = array();
$headr[] = 'Content-length: 0';
$headr[] = 'Authorization: OAuth oauth_consumer_key="xxx", oauth_signature_method="PLAINTEXT", oauth_signature="xxx"';
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 120);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER,$headr);
$pageSize = 10;
$data = array(
"rows" => $pageSize,
"sort_order" => "ExpiryDesc",
"page" => 1
);
$totalPages = PHP_INT_MAX;
$result = [];
do {
curl_setopt($curl, CURLOPT_URL, $url."?".http_build_query ($data));
$resulta = curl_exec($curl);
$array = json_decode($resulta, true);
array_merge($result, $array);
$data['page']++;
if ( $totalPages == PHP_INT_MAX ) {
$totalPages = floor($array['TotalCount']/$pageSize);
}
}
while ( $totalPages < $data['page']);
$properties = $array['List'];
$prop_count = $array['TotalCount'];
curl_close($curl);
这是我用来返回 500 个结果的代码。 $prop_count 保存总行数(1504),$pages 保存页数(在本例中为 3.08)。
谁能让我先了解一下逻辑顺序以实现某种循环以返回所有结果?我坐在这里绞尽脑汁想要开始。
【问题讨论】:
-
您获取的号码是
$currentPage * $countPerPage。如果小于$totalCount,请继续。