一、说明
- 调用第三方的分页接口,接口返回的参数里有
page_total(总记录数)
- 接口是
付费接口
,尽量最优调用(能缓存就缓存,能调用1次就不调用2次)
二、思路
1、法一
- 先在循环外调用一次接口,获取总页数,然后在
for foreach
循环中调用接口
- 这样的话,就在最外面多调用了一次,造成资源浪费,不是最优方案
2、法二
步骤1)
也是先在循环外调用一次接口
- 但是在循环中,判断一下,如果
不是第一页
才调用接口;如果是第一页就直接取 步骤1)
的值
- 综上:
代码使用的是该方法
3、法三
三、打码及打印
public function processData($page = 1)
{
$url = "/api/getKeyword?page={
$page}";
$result = $this->getPageData($url, $page);
if ($result['code'] != 0) {
die($result['msg']);
}
$pageTotal = $result['data']['page_total'];
for ($currentPage = $page; $currentPage <= $pageTotal; $currentPage ++) {
if ($currentPage != 1) {
$url = "/api/getKeyword?page={
$currentPage}";
$result = $this->getPageData($url, $currentPage);
}
if ($result['code'] != 0) {
die($result['msg']);
}
$data = $result['data']['list'];
echo "第 [ {
$currentPage} ] 页数据:\t";
var_export($data);
echo '<br/>';
}
<<<EOF
第 [ 1 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好1', ), 1 => array ( 'id' => 2, 'name' => '你好啊 1', ), )
第 [ 2 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好2', ), 1 => array ( 'id' => 2, 'name' => '你好啊 2', ), )
第 [ 3 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好3', ), 1 => array ( 'id' => 2, 'name' => '你好啊 3', ), )
第 [ 4 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好4', ), 1 => array ( 'id' => 2, 'name' => '你好啊 4', ), )
第 [ 5 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好5', ), 1 => array ( 'id' => 2, 'name' => '你好啊 5', ), )
第 [ 6 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好6', ), 1 => array ( 'id' => 2, 'name' => '你好啊 6', ), )
第 [ 7 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好7', ), 1 => array ( 'id' => 2, 'name' => '你好啊 7', ), )
第 [ 8 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好8', ), 1 => array ( 'id' => 2, 'name' => '你好啊 8', ), )
第 [ 9 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好9', ), 1 => array ( 'id' => 2, 'name' => '你好啊 9', ), )
第 [ 10 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好10', ), 1 => array ( 'id' => 2, 'name' => '你好啊 10', ), )
第 [ 11 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好11', ), 1 => array ( 'id' => 2, 'name' => '你好啊 11', ), )
第 [ 12 ] 页数据: array ( 0 => array ( 'id' => 1, 'name' => '你好12', ), 1 => array ( 'id' => 2, 'name' => '你好啊 12', ), )
EOF;
}
public function getPageData($url, $page)
{
$result = [
'code' => 0,
'msg' => '',
'data' => [
'total' => 23,
'page_total' => 12,
'page' => 1,
'page_size' => 2,
'list' => [
[
'id' => 1,
'name' => '你好' . $page
],
[
'id' => 2,
'name' => "你好啊 {
$page}"
]
]
]
];
return $result;
}