Novinky ve verzi Laravel 12.32: Http::batch
Nová funkce od Wendell Adriel přistál v Laravelu 12.32; Http::batch, což usnadňuje odesílání více požadavků HTTP současně pomocí háčků životního cyklu.
Http::pool vs. Http::batch
Dříve byla v systému Laravel Http::pool umožňoval souběžné požadavky, ale postrádal háčky pro zpracování událostí před, během a po provedení. S Http::batch, nyní máte k dispozici:
before- se spustí před jakýmikoliv požadavkyprogress- se spustí po každém úspěšném požadavkucatch- se spustí po každém neúspěšném požadavkuthen- spustí se, pokud všechny požadavky uspějífinally- se spustí po dokončení všech požadavků
Http::batch v akci
$responses = Http::batch(fn (Batch $batch) => [ $batch->get('http://localhost/first'), $batch->get('http://localhost/second'),])->before(function (Batch $batch) { // This runs before the first HTTP request is executed.})->progress(function (Batch $batch, int|string $key, Response $response) { // This runs after each successful HTTP request from the Batch.})->catch(function (Batch $batch, int|string $key, Response|RequestException $response) { // This runs after each failed HTTP request from the Batch.})->then(function (Batch $batch, array $results) { // This runs ONLY IF all the HTTP requests from the Batch are successful and the batch is not cancelled.})->finally(function (Batch $batch, array $results) { // This runs after all the HTTP requests from the Batch finish and the batch is not cancelled.})->send();
Žádosti nelze přidávat po spuštění dávky.
Pomocné metody a vlastnosti
Kromě háčků nabízí třída \Illuminate\Http\Client\Batch také několik pomocníků pro kontrolu a sledování dávky:
- $batch->totalRequests → celkový počet požadavků.
- $batch->pendingRequests → kolik jich ještě čeká.
- $batch->failedRequests → kolik se jich nepodařilo.
- $batch->processedRequests() → počet zpracovaných požadavků.
- $batch->hasFailures() → vrací true, pokud existují chyby.
- $batch->finished() → vrací true, když jsou všechny požadavky hotové.
Shrnutí
Http::batch přináší přehledné a expresivní rozhraní API pro orchestraci souběžných volání HTTP. Je ideální pro pracovní postupy s více službami, dávkové načítání dat a sledování průběhu.
Více informací najdete v PR: #56946