API请求循环偏移

时间:2019-05-07 11:43:57

标签: php json api

尝试通过API请求获取所有项目,有 offset limit 个参数。

我在json响应中还有 count 个项目,该项目显示了该请求在该日期的总项目数。但是我无法在算法中使用它。

一个API请求限制为1000个项目。

我只是想不出将所有项目都放在一个循环中的算法,它应该尽可能快并且不占用大量资源。

$api_key = 'XXXXXXXXXXXXXXXXX';
$api_secret = 'XXXXXXXXXXXXXXXXX';
$dateStart = 'XXXX-XX-XX';
$dateStop = 'XXXX-XX-XX';

$offset = 0;
$limit = 1000;

do{
    $url = 'https://XXXXXXX/sessions?dateStart='. $dateStart .'&dateStop='. $dateStop 
            .'&limit='. $limit .'&offset='. $offset 
            . &api_key='. $api_key . '&api_secret='. $api_secret;
    $source = file_get_contents($url);
    $obj = json_decode($source, true);

    for ($i = 0; $i < count($obj['data']); $i++)
    {
        echo $i . " - ";
        echo $obj['data'][$i]['User'] . '<br>';
    }

    $offset += $limit;
} while(count($obj['data']) >= $limit);

可以,但是少于1000个项目时。

0 个答案:

没有答案