У меня есть конечная точка, на которую я могу отправить запрос GET, и он возвращает другой результат в зависимости от лимита и смещения.
https://example-foo-bar.com?l=100&o=0 // returns the first 100 items.
Я хочу создать цикл for (или цикл Nested for, который я предполагаю), который возвращает 100 элементов за раз, добавляя результат в массив каждый раз до конца ответа. У меня есть код для отправки запроса curl и сохранения результата, просто борясь на части пакетной обработки.
Что-то вроде:
https://example-foo-bar.com?l=100&o=0
https://example-foo-bar.com?l=100&o=99
https://example-foo-bar.com?l=100&o=199
https://example-foo-bar.com?l=100&o=218 // end of response ?
Я также знаю, сколько всего результатов, хранящихся в виде $ count;
Я закончил с чем-то вроде этого, но это не лучшая практика:
function testLoop(){
$limit = 100;
$count = getCount();
$j = ceil($count/$limit);
for ($i = 0; $i < $j; $i++){
$offset = $i*100;
echo 'https://example-foo-bar?l='.$limit.'&o='.$offset.'';
}
}
testLoop();
Я не уверен, правильно ли я понял вопрос. Но вы ищете что-то подобное?
$offset = 0;
$limit = 100;
$run = true;
$result_array = array();
while($run) {
$result_array = array_merge($result_array, json_decode(file_get_contents("https://example-foo-bar.com?l=".$limit."&o=".$offset),true));
$offset = $offset + $limit;
if($offset == {somenumber}) {
$run = false;
}
}
Затем используйте задание cron для вызова php-файла.
Лучший способ использовать Cron для такого типа пакетного процесса, вы также можете использовать php-resque