Concurrent Requests mit dem Laravel HTTP Client

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();

Schreibe einen Kommentar