Пакетная обработка PHP для цикла

У меня есть конечная точка, на которую я могу отправить запрос 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

Решение

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

$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

Другие решения

  1. Создайте таблицу ‘schedule’ и сохраните идентификатор данных, имя_ссылки, смещение и столбец состояния
  2. установить выполнение cron каждые 10 минут и сначала принять запись (одну), статус которой = 0
  3. передать param в testLoop ($ limit) для вызова функции. Это может вся ссылка только смещение = 0, смещение = 99, смещение = 199 и так
  4. После завершения обновите статус = 1 в таблице расписания.
  5. Спустя 10 минут cron Call Step1.
0

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

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector