Jak kontext Laravel pracuje s úlohami

Průvodce používáním kontextu Laravel k přidávání dalších informací k úlohám Laravel Kontext poskytuje vynikající způsob, jak zachytit a sdílet metadata v rámci požadavků, úloh a p...

Světlý režim slouží jen pro ukázku funkcionality. Proto používejte tmavou verzi webu.

02. 01. 2025

Jak kontext Laravel pracuje s úlohami

Průvodce používáním kontextu Laravel k přidávání dalších informací k úlohám

Laravel Kontext poskytuje vynikající způsob, jak zachytit a sdílet metadata v rámci požadavků, úloh a příkazů v aplikaci. To umožňuje sledovat důležité informace, jako jsou ID uživatelů, adresy URL nebo ID trasování, a automaticky je vkládat do protokolů a úloh. To může být neocenitelné při ladění, monitorování a sledování toku dat v distribuovaných systémech.

V této příručce se zaměříme na to, jak funkce kontextu v systému Laravel umožňuje přidávat k úlohám další informace, což usnadňuje sledování a ladění procesů na pozadí.

Jak kontext Laravel pracuje s úlohami

Kontextová funkce Laravelu funguje tak, že zachycuje data v rámci kontext a následné přiřazení těchto dat ke konkrétním úlohám nebo akcím v aplikaci. Při odeslání úlohy jsou kontextová data automaticky sdílena s touto úlohou. To znamená, že všechny informace v kontextu jsou během provádění úlohy k dispozici.

Rozebereme si to na příkladu.

1. Přidání kontextu do požadavku

Nejprve zachytíme některé informace během příchozího požadavku pomocí middlewaru. Zde budeme ukládat data, která budou později předána úlohám při jejich odesílání.

namespace App\Http\Middleware;
 
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Context;
use Illuminate\Support\Str;
use Symfony\Component\HttpFoundation\Response;
 
class AddContext
{
/**
* Handle an incoming request.
*/
public function handle(Request $request, Closure $next): Response
{
// Add URL and trace ID to the context
Context::add('url', $request->url());
Context::add('trace_id', Str::uuid()->toString());
 
return $next($request);
}
}

Ve výše uvedeném middlewaru přidáváme adresu URL požadavku a jedinečné ID stopy do kontextu každého příchozího požadavku.

2. Odesílání úlohy s kontextem

Po přidání kontextu můžete úlohu odeslat běžným způsobem. Kontextová data budou automaticky předána spolu s úlohou:

// In our controller...
ProcessPodcast::dispatch($podcast);

Informace o kontextu, které byly přidány během požadavku, budou zahrnuty při odeslání úlohy. Laravel automaticky zpracuje dehydratace (zachycení kontextu) a hydratace (obnovení kontextu) těchto informací.

3. Přístup ke kontextu v úloze

Uvnitř úlohy jsou kontextová data k dispozici stejně jako během požadavku. Zde je uvedeno, jak můžete ke kontextu přistupovat v rámci úlohy handle() metoda:

use Illuminate\Support\Facades\Log;
 
class ProcessPodcast implements ShouldQueue
{
use Queueable;
 
// ...
 
/**
* Execute the job.
*/
public function handle(): void
{
Log::info('Processing podcast.', [
'podcast_id' => $this->podcast->id,
]);
 
// Job logic
}
}

Při provádění úlohy Laravel automaticky zahrne kontextové informace, které byly zachyceny během požadavku. Výsledný záznam v protokolu může vypadat takto:

Processing podcast. {"podcast_id":95} {"url":"https://example.com/login","trace_id":"e04e1a11-e75c-4db3-b5b5-cfef4ef56697"}

Tento protokol obsahuje jak údaje specifické pro danou úlohu (podcast_id) a kontextová data (url a trace_id), což umožňuje bezproblémově sledovat provádění požadavku a úlohy společně.

Praktické výhody používání kontextu s pracovními místy

  1. Zlepšená sledovatelnost: Díky automatickému sdílení kontextu s úlohami můžete sledovat tok požadavků prostřednictvím procesů na pozadí a pochopit, jak jsou různé akce vzájemně propojeny.

  2. Lepší ladění: Přístup ke kontextu v protokolech a úlohách usnadňuje ladění problémů, protože máte větší přehled o prostředí a datech, která provázejí každé provedení úlohy.

  3. Bezproblémové monitorování: Kontextové informace usnadňují sledování stavu a výkonu úloh, protože můžete korelovat protokoly a provedení úloh pomocí konzistentních metadat, jako jsou ID trasování.

Závěr

Laravel Kontext nabízí efektivní způsob přidávání a správy metadat v rámci úloh. Automatickým sdílením kontextových dat během životního cyklu úlohy můžete zlepšit sledovatelnost, ladění a monitorování úloh na pozadí. Ať už potřebujete předat jednoduché informace, jako jsou adresy URL, nebo složitější údaje, jako jsou ID trasování, funkce kontextu Laravelu zajistí, že všechny relevantní údaje budou k dispozici všude, kde je budete potřebovat.

Začněte používat Laravel Context ještě dnes a získejte lepší přehled o provádění úloh a zlepšete robustnost své aplikace!

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

Mohlo by vám pomoct

Praktické věci kolem webu

Než se pustíte do webu, hodí se mít jasno v podkladech, WordPressu, cookies a měření.

Google reference

Co říkají klienti

Ukázky skutečných recenzí, které klienti zanechali na mém Google profilu.

Přejít na recenze
★ ★ ★ ★ ★

„Člověk, který své práci a rozumí a ví co dělá. Velmi rychlá komunikace a profesionální přístup. Doporučuji.“

Jaroslav Kupča
Google
★ ★ ★ ★ ★

„Skvělá spolupráce, při dalších projektech určitě nebudu shánět někoho jiného.“

Roman Koňařík
Google
★ ★ ★ ★ ★

„S panem Vančurou jsem spolupracovala na tvorbě mých webových stránek a jsem maximálně spokojená. Oceňuji profesionální přístup, rychlou komunikaci a schopnost přesně pochopit moje představy. Web je moderní, přehledný, funkční a skvěle vypadá i na mobilu. Celý proces proběhl hladce, s jasným vysvětlením jednotlivých kroků a výborným výsledkem. Určitě doporučuji každému, kdo hledá spolehlivý a kvalitní přístup.“

Barbora Zemánková
Google
★ ★ ★ ★ ★

„Spolupráce při tvorbě konfigurátoru proběhla naprosto bez problémů. Oceňuji profesionální přístup, rychlou komunikaci a schopnost pochopit specifický projekt od A do Z. Konfigurátor je přehledný, funkční a přesně odpovídá mým požadavkům. Rozhodně doporučuji.“

mareksevcik_FPV
Google
★ ★ ★ ★ ★

„Velmi dobrá a rychlá spolupráce. Doporučuji!“

Leoš Kaucký
Google
★ ★ ★ ★ ★

„Přesně takto si představujeme profesionální práci. Dekujeme“

STAVILLI
Google
★ ★ ★ ★ ★

„Ať už se jedná o optimalizaci webu, nebo tvorbu na míru oceňuji kromě profesionální práce a znalostí problematiky také férový přístup a komunikaci.“

Aleš Illický
Google
★ ★ ★ ★ ★

„Děkuji za profesionální spolupráci, vše dle domluvy, naprostá spokojenost a mohu jen vřele doporučit.... Při dalších projektech určitě opět využiji Vašich služeb“

Peter Spilak
Google
★ ★ ★ ★ ★

„Profesionalita a velká ochota, nemohu jinak než doporučit“

Magdalena Vašková
Google
★ ★ ★ ★ ★

„Skvělá zkušenost při tvorbě webu, profesionální přístup, rychlost, ochota pomoci“

Jana Kono
Google
★ ★ ★ ★ ★

„Rychlá spolupráce a komunikace – mohu jen doporučit.“

Gawix
Google
★ ★ ★ ★ ★

„Moc mi pomohl, když jsem potřebovala pomoc s webem. A bylo to gratis :)). Jsem mu neskonale vděčná.“

Radka Arbesová
Google
★ ★ ★ ★ ★

„Děkuji Jiřímu za rychlou a kvalitní spolupráci na tvorbě webu. Srozumitelná a ochotná komunikace mě vždycky potěší a přináší důvěru.“

Jiří Mařík
Google
★ ★ ★ ★ ★

„Jsem maximálně spokojená. Rychlost, ochota a cenově dostupné. Děkuji“

Veronika Černá
Google
★ ★ ★ ★ ★

„Naprostá spokojenost. Rychlá komunikace, skvělá cena a odborná pomoc. Moc děkuji :)“

Patricie Kučerová
Google
★ ★ ★ ★ ★

„Velká spokojenost, rychlost a p. Vančura moc dobře ví co dělá. :)“

Ondřej Daniško
Google
★ ★ ★ ★ ★

„dobrá práce, rychlá odezva“

Zuzana Jírová
Google
★ ★ ★ ★ ★

„S programátory mám zkušeností hodně, ale tady musím opravdu pochválit. Pro mě a mé přátele vytvořil skvělý nástroj na evidenci sbírek a opravdu se to povedlo. Bylo to hotové rychle, kvalitně a za skvělou cenu. Komunikace funguje velmi rychle, což je super a ne úplně standard. Díky za super práci, za mě 100% spokojenost!“

Zdeněk
Google
★ ★ ★ ★ ★

„Vše bylo rychlé a hlavně to funguje. Dobrá práce.“

Lukáš Bartášek
Google
★ ★ ★ ★ ★

„Normálně recenze nepíši, ale zde rád doporučím kvalitní práci. Jiří pro mě vytvořil web pro dětské tábory. Kvalitní práce, rychlá komunikace a vlastní nápady, které Jiří sám přidá, jsou na velice vysoké úrovni. Nemohu hodnotit jinak než 5/5.“

Tomáš Loněk
Google
★ ★ ★ ★ ★

„Pan Jiri nam delal jiz 3 webove stranky a vzdy velka spokojenost, je mega rychly a vse hned kladne vyridi, mohu pouze doporucit. Poradi si bez problemu i s rezervacnimi kalendaremi, udrzbou socialnich siti, atd.“

Barbara Mašková
Google