Http::batch s háčky v Laravel 12.32

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ů...

Poptat web

01. 10. 2025

Http::batch s háčky v Laravel 12.32

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žadavky
  • progress - se spustí po každém úspěšném požadavku
  • catch - se spustí po každém neúspěšném požadavku
  • then - 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

Původní článek publikoval Nabil Hassen.