it depends
- если запросы зависимые, то в цикле
- если запросы можно выполнить "параллельно", то можно асинхронно сделать сразу все 4 запроса и подождать самый медленный
например через multi curl, тогда все 4 запроса будут выполняться за время самого медленного из них, а не за сумму времени, удобно через
Guzzle Async
$promise1 = $client->getAsync('http://www.example.com/foo1');
$promise2 = $client->getAsync('http://www.example.com/foo2');
$promise3 = $client->getAsync('http://www.example.com/foo3');
$promises = [$promise1, $promise2, $promise3];
$results = GuzzleHttp\Promise\settle($promises)->wait(); // тут все результаты
в обоих случаях не понятно, зачем таймаут, тк синхронно второй запрос начнется только ПОСЛЕ выполнения предыдущего, а в асинхронном варианте они просто выполнятся "одновременно" и вы получите результат сразу от всех запросов... таймаут ни к селу ни к городу