Der Laravel HTTP-Client (der auf dem Guzzle-Client basiert) kann genutzt werden, um Concurrent Requests auszuführen. Ein Codebeispiel:
use Http;
use Illuminate\Http\Client\Pool;
$responses = Http::pool(fn(Pool $pool) => [
$pool->get('https://example.com/first_url'),
$pool->get('https://example.com/second_url'),
$pool->get('https://example.com/third_url'),
]);
return $responses[0]->ok() &&
$responses[1]->ok() &&
$responses[2]->ok();
Die drei GET-Aufrufe werden ausgeführt, das Resultat kann über den Index abgefragt werden, der in der entsprechenden Hinzufüge-Reihenfolge gesetzt wird.
Requests benennen
Alternativ können auch Namen für die Aufrufe vergeben werden, die dann zum Abfragen des Resultats genutzt werden können. Ein Beispiel:
$responses = Http::pool(fn(Pool $pool) => [
$pool->as('first')->get('https://example.com/first_url'),
$pool->as('second')->get('https://example.com/second_url'),
$pool->as('third')->get('https://example.com/third_url'),
]);
return $responses['first']->ok();