Вы могли бы рассмотреть возможность использования Обещаний Guzzle и отправлять запросы в параллельном режиме.
Библиотека находится здесь: https://github.com/guzzle/promises.
Клиент Guzzle упаковывает обещания с помощью магических методов, таких как ...
$promise = $client->getAsync('http://httpbin.org/get');
$promise = $client->deleteAsync('http://httpbin.org/delete');
$promise = $client->headAsync('http://httpbin.org/get');
$promise = $client->optionsAsync('http://httpbin.org/get');
$promise = $client->patchAsync('http://httpbin.org/patch');
$promise = $client->postAsync('http://httpbin.org/post');
$promise = $client->putAsync('http://httpbin.org/put');
... документация для этого можетможно найти здесь:
Асинхронные запросы Guzzle: http://docs.guzzlephp.org/en/stable/quickstart.html#async-requests
Он имеет несколько понятий, таких как wait
, then
, queue
и resolve
.Они помогают вам делать асинхронные запросы, имея полный контроль над тем, что разрешать синхронно.
При этом также можно будет получать агрегированные результаты, что означает, например, что вы можете запрашивать ваши user-api и вашиprojects-api и дождитесь возвращения некоторых результатов, чтобы можно было создать один единственный ответ json, содержащий объединенные данные из двух источников.
Это очень удобно для проектов, в которых реализован API-шлюз.