У меня проблема с моим массивом результатов, я изначально намеревался иметь что-то вроде этого
$promises = [
'0' => $client->getAsync("www.api.com/opportunities?api=key&page=1fields=['fields']"),
'1' => $client->getAsync("www.api.com/opportunities?api=key&page=2fields=['fields']"),
'2' => $client->getAsync("www.api.com/opportunities?api=key&page=3fields=['fields']")
];
Массив обещаний запроса, я буду использовать его, потому что хочу получить набор данных из API, который я использую. Так выглядит первая страница API
В моем запросе я хочу получить страницу 2,3,4. Вот как выглядит страница 2
Я сделал do while l oop на моем PHP скрипте, но похоже, что он запускает бесконечный цикл. Вот как это должно быть работай. Сначала я запускаю первоначальный запрос, затем получаю totalRecordCount = 154 и вычитаю его до recordCount = 100, если разница! = 0, он запускает его снова и меняет $ pageNumber и pu sh на обещания.
Это это мой код функции. Вот мой код
function runRequest(){
$promises = [];
$client = new \GuzzleHttp\Client();
$pageCounter = 1;
$globalCount = 0;
do {
//request first and then check if has difference
$url = 'https://api.com/opportunities_dates?key='.$GLOBALS['API_KEY'].'&page='.$pageCounter.'&fields=["fields"]';
$initialRequest = $client->getAsync($url);
$initialRequest->then(function ($response) {
return $response;
});
$initialResponse = $initialRequest->wait();
$initialBody = json_decode($initialResponse->getBody());
$totalRecordCount = $initialBody->totalRecordCount;//154
$recordCount = $initialBody->recordCount;//100
$difference = $totalRecordCount - $recordCount;//54
$pageCounter++;
$globalCount += $recordCount;
array_push($promises,$url);
} while ($totalRecordCount >= $globalCount);
return $promises;
}
$a = $runRequest();
print_r($a); //contains array of endpoint like in the sample above