У меня есть конечная точка, на которую я могу отправить запрос 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();
0
Shh 20 Авг 2018 в 12:48

3 ответа

Лучший ответ

Я не уверен, правильно ли я понял вопрос. Но вы ищете что-то подобное?

$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-файла.

1
Shh 20 Авг 2018 в 13:09
  1. Создайте таблицу «расписание» и сохраните идентификатор данных, имя_ссылки, смещение и столбец состояния
  2. установить выполнение cron каждые 10 минут и сначала принять запись (одну), статус которой = 0
  3. передать param в testLoop ($ limit) для вызова функции. Это может вся ссылка только смещение = 0, смещение = 99, смещение = 199 и так
  4. После завершения обновите статус = 1 в таблице расписания.
  5. Через 10 минут cron Call Step1.
0
Gopal Rathod 20 Авг 2018 в 11:34

Лучший способ использовать Cron для такого типа пакетного процесса, вы также можете использовать php-resque

0
Saurabh Chandra Patel 20 Авг 2018 в 11:39
51928075