Ovladač odložené fronty v Laravel 12.35

Úvod Laravel 12.35 přidává nový ovladač fronty s názvem deferred, určené ke zpracování úloh ve frontě po odpověď HTTP je odeslána zpět klientovi, a to vše v rámci stejného procesu...

Poptat web

21. 10. 2025

Ovladač odložené fronty v Laravel 12.35

Úvod

Laravel 12.35 přidává nový ovladač fronty s názvem deferred, určené ke zpracování úloh ve frontě po odpověď HTTP je odeslána zpět klientovi, a to vše v rámci stejného procesu PHP.

Na rozdíl od typických ovladačů fronty (database, redis, sqs, atd.), které se spoléhají na externí pracovníky. řidič s odloženou platností umožňuje odložit nekritické úlohy, jako je odesílání e-mailů, protokolování nebo analýza, až do dokončení požadavku.

Jak funguje ovladač odložené fronty

Zde se dozvíte, co se děje pod kapotou při použití funkce deferred ovladač fronty:

  1. Úlohu normálně odešlete pomocí dispatch().
  2. Jakmile je uživateli odeslána odpověď HTTP, Laravel automaticky zpracuje odložené úlohy. synchronně v rámci téhož procesu PHP po odeslání odpovědi uživateli.

Konfigurace

Chcete-li použít ovladač odložené fronty, přidejte nové připojení do svého config/queue.php soubor:

'connections' => [
'deferred' => [
'driver' => 'deferred',
],
],

Nastavte ji globálně ve svém .env:

QUEUE_CONNECTION=deferred

V kódu pak můžete:

SendWelcomeEmail::dispatch($user);

Kombinace odloženého přístupu s ovladačem fronty při selhání

Můžete kombinovat řidič s odloženou platností s funkcí Laravel ovladač fronty s podporou převzetí služeb při selhání aby byla zajištěna maximální spolehlivost.

V tomto nastavení se Laravel nejprve pokusí odeslat úlohy do vašeho hlavního systému. databáze fronta. Pokud se to nepodaří (například z důvodu dočasného problému s připojením), bude se vrátit se k odloženému ovladači, což zajistí, že úloha bude spuštěna ihned po odeslání odpovědi HTTP.

Zde je návod, jak ji nakonfigurovat v aplikaci config/queue.php:

'connections' => [
 
'failover' => [
'driver' => 'failover',
'connections' => ['database', 'deferred'],
],
],

Pak ve svém .env soubor:

QUEUE_CONNECTION=failover

Nyní při odesílání úlohy:

SendWelcomeEmail::dispatch($user);

Tady je průběh:

  1. Laravel se pokusí odeslat úlohu do serveru databáze nejprve ve frontě.
  2. Pokud připojení k databázové frontě selže, Laravel automaticky se vrátí k odloženému ovladači.
  3. Odložený ovladač zajistí, že úloha bude spuštěna ihned po odeslání odpovědi uživateli, což zabrání ztrátě úlohy i v případě, že je hlavní fronta nefunkční.

Tato hybridní konfigurace poskytuje jak spolehlivost a rychlost:

  • Úlohy jsou obvykle zpracovávány primárním systémem fronty (např. databázovými pracovníky).
  • Pokud není k dispozici, provedou se okamžitě po odpovědi díky funkci odloženého zpětného přístupu.

Kdy použít ovladač odložené fronty

Na stránkách ovladač odložené fronty je ideální pro:

  • Odesílání transakčních e-mailů ihned po požadavku.
  • Zaznamenávání analytických údajů nebo metrik po odpovědi.
  • Vysílání událostí nebo oznámení, které nemají vliv na bezprostřední uživatelské prostředí.
  • Jakákoli krátká nekritická úloha, která by měla být spuštěna po odezvě, ale nepotřebuje vyhrazeného pracovníka.

Vyhněte se mu však pro:

  • Dlouhotrvající nebo na prostředky náročné úlohy.
  • Úlohy, které vyžadují logiku opakování nebo distribuované zpracování (použití redis, sqs, nebo database místo toho).

Souhrn

Na stránkách Ovladač odložené fronty zavedené v Laravel 12.35 poskytuje jednoduchý, ale výkonný způsob spouštění úloh ve frontě. po odpověď HTTP je odeslána bez dalších nastavení nebo pracovníků.

Ve spojení s Ovladač fronty s podporou převzetí služeb při selhání, vytváří bezpečný a efektivní hybridní přístup: okamžité provedení po odpovědi se spolehlivou záložní ochranou.

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