ix
ix

informatix

EN version Porozmawiajmy o projekcie
Strona główna / Blog / Kolejki w Laravel i Horizon — skalowanie aplikacji bez spowo...
• 7 min czytania •

Kolejki w Laravel i Horizon — skalowanie aplikacji bez spowolnień [2026]

Kolejki w Laravel od podstaw: kiedy ich potrzebujesz, Redis czy database, konfiguracja Horizon, obsługa błędów i realne koszty wdrożenia.

Kolejki w Laravel i Horizon — skalowanie aplikacji bez spowolnień [2026]
Web development

Kolejki w Laravel przenoszą ciężkie operacje poza cykl żądania HTTP — e-mail po rejestracji, synchronizacja z Baselinkerem, generowanie faktury czy przetwarzanie pliku nie muszą blokować użytkownika. Efekt to szybsze odpowiedzi aplikacji i procesy, które nie gubią się przy awariach. Laravel Horizon dodaje do tego monitoring, metryki i zarządzanie workerami w czasie rzeczywistym. Wdrożenie kolejek w istniejącym projekcie to koszt orientacyjnie 2 000–10 000 zł netto + VAT.

Kiedy aplikacja potrzebuje kolejek?

Kolejki przestają być opcją, gdy pojawia się którykolwiek z tych sygnałów.

  • Żądania trwają dłużej niż 1–2 sekundy — użytkownik czeka na operacje, które nie muszą dziać się na żywo.
  • Operacje zewnętrzne blokują odpowiedź — wysyłka e-maili, PDF-ów, integracje API, przetwarzanie obrazów.
  • Zdarzają się timeouty i podwójne wykonania — brak mechanizmu retry powoduje, że błąd API partnera kończy proces bezpowrotnie.
  • Importy i eksporty danych — duże pliki CSV przetwarzane w jednym żądaniu to gwarancja problemów.
  • Powiadomienia i webhooki — wysyłka setek powiadomień w pętli zabija wydajność aplikacji.

Wskazówka: Zasada kciuka — jeśli operacja nie musi zakończyć się przed wysłaniem odpowiedzi do użytkownika, powinna trafić do kolejki. Użytkownik dostaje natychmiastową odpowiedź, a zadanie wykonuje się w tle z możliwością ponowienia.

Jak działają kolejki w Laravel?

System kolejek w Laravel składa się z trzech elementów: zadań (jobs), kolejek (queues) i workerów. Zadanie to klasa opisująca pracę do wykonania.

php artisan make:job SyncInventoryWithBaselinker

Zadanie możesz wysłać do kolejki w dowolnym miejscu aplikacji.

SyncInventoryWithBaselinker::dispatch($order->id);

Worker to proces, który pobiera zadania i je wykonuje.

php artisan queue:work --tries=3

W produkcji workery uruchamiane są jako usługi systemowe (Supervisor lub systemd) i restartowane po każdym wdrożeniu — to jeden z kroków, które automatyzuje pipeline CI/CD.

Redis czy database? Wybór sterownika kolejek

Laravel obsługuje kilka sterowników kolejek. W praktyce wybór sprowadza się do dwóch opcji.

Kryterium Database Redis
Konfiguracja Zero — tabela w istniejącej bazie Wymaga serwera Redis
Wydajność Wystarczająca do małych i średnich obciążeń Bardzo wysoka, tysiące zadań na minutę
Priorytety kolejek Tak Tak
Horizon Nie Tak
Kiedy wybrać Proste aplikacje, mały ruch Produkcja, integracje, wysoka skala

Dla aplikacji z jedną bazą i kilkoma zadaniami dziennie wystarczy sterownik database. Gdy pojawiają się integracje, powiadomienia i przetwarzanie wsadowe — Redis staje się naturalnym wyborem, między innymi po to, żeby kolejki nie konkurowały o zasoby z bazą aplikacji. Konfigurację i wzorce pracy z Redisem opisuję w artykule Redis w Laravel — cache, kolejki i sesje.

Laravel Horizon — monitoring i kontrola kolejek

Horizon to panel i system zarządzania kolejkami opartymi o Redis. Daje cztery rzeczy, których brakuje w gołym queue:work.

  • Dashboard w czasie rzeczywistym — przepustowość, czasy oczekiwania, obciążenie kolejek.
  • Metryki i historia — ile zadań wykonano, ile się nie powiodło, jakie były czasy przetwarzania.
  • Zarządzanie workerami — liczba procesów dla każdej kolejki, priorytety, autoskalowanie.
  • Alerty o problemach — zalegające kolejki widzisz zanim staną się awarią.

Konfiguracja jest deklaratywna — definiujesz w pliku konfiguracyjnym, ile procesów ma obsługiwać każdą kolejkę, a Horizon pilnuje reszty.

Retry, backoff i idempotencja — kolejki odporne na błędy

Kolejki bez obsługi błędów tylko przesuwają problem w czasie. Trzy mechanizmy, które stosujemy w każdym wdrożeniu

  • Retry — zadanie, które się nie powiodło, jest ponawiane określoną liczbę razy (--tries).
  • Backoff — kolejne próby są rozłożone w czasie, żeby nie dobijać niedostępnego API partnera.
  • Idempotencja — zadanie wykonane dwukrotnie nie tworzy dwóch faktur ani dwóch zamówień. To szczególnie ważne przy integracjach.

Jak projektować odporne procesy asynchroniczne, opisałem szerzej w artykule integracje API i webhooki — jak projektować odporne procesy.

Failed jobs — jak nie zgubić zadania

Każde zadanie, które przekroczy limit prób, trafia do tabeli failed_jobs. To nie jest porażka systemu — to element procesu. W praktyce:

  • monitorujemy tabelę failed_jobs i alertujemy o nowych wpisach,
  • dodajemy komendę ponawiania (queue:retry all) do procedur operacyjnych,
  • analizujemy przyczyny — najczęściej to zmiany w zewnętrznym API lub wygasłe tokeny.

Najgorszy scenariusz to zadanie, które zniknęło bez śladu. Laravel tego nie robi — każde nieudane zadanie zostaje zapisane wraz z błędem.

Kolejki a wydajność aplikacji

Kolejki to jedna z najskuteczniejszych optymalizacji wydajności w Laravel — często skuteczniejsza niż mikrooptymalizacje zapytań SQL. Przeniesienie ciężkich operacji do tła skraca czas odpowiedzi nawet o 80%, a użytkownik nie czeka na operacje, które nie wpływają na to, co widzi. Pozostałe techniki opisuję w artykule optymalizacja wydajności aplikacji Laravel.

Ile kosztuje wdrożenie kolejek?

Orientacyjne koszty wdrożenia kolejek i Horizon, netto + VAT

  • Konfiguracja kolejek w nowym projekcie — element standardu, wliczony w stawkę 90–160 zł/h.
  • Wdrożenie kolejek w istniejącej aplikacji — 2 000–10 000 zł, zależnie od liczby procesów do przeniesienia.
  • Migracja z database na Redis plus Horizon — 2 000–5 000 zł, zwykle 2–4 dni pracy.

Jeśli aplikacja zwalnia przy wzroście ruchu albo integracje gubią się przy błędach API — opisz projekt w formularzu kontaktowym. Wycena jest bezpłatna. Szukasz wykonawcy?

Zobacz programistę Laravel na zlecenie.

Najczęściej zadawane pytania

Kiedy wprowadzić kolejki w aplikacji Laravel?

Gdy operacje zewnętrzne (e-mail, integracje, PDF) blokują odpowiedzi HTTP, żądania przekraczają 1–2 sekundy albo potrzebujesz ponawiania nieudanych operacji. Kolejki warto zaplanować już na etapie architektury — dopisywanie ich później jest możliwe, ale kosztowniejsze.

Redis czy database do kolejek?

Database wystarczy dla prostych aplikacji z małym ruchem i bez wymagań na monitoring. Redis wybierz, gdy potrzebujesz wydajności, priorytetów i Horizon — czyli w większości aplikacji produkcyjnych z integracjami i powiadomieniami.

Co daje Laravel Horizon?

Horizon daje dashboard w czasie rzeczywistym, metryki przepustowości i błędów, konfigurację liczby workerów dla każdej kolejki oraz autoskalowanie. Bez niego kolejki działają „w ciemno" — nie wiesz, co zalega i gdzie pojawiają się błędy.

Ile kosztuje wdrożenie kolejek w Laravel?

Wdrożenie kolejek w istniejącym projekcie to orientacyjnie 2 000–10 000 zł netto + VAT. Migracja na Redis z Horizonem to zwykle 2 000–5 000 zł. W nowych projektach kolejki są częścią standardu i mieszczą się w stawce godzinowej.

Jak obsługiwać nieudane zadania (failed jobs)?

Każde zadanie po przekroczeniu limitu prób trafia do tabeli failed_jobs z pełnym błędem. Monitoruj tę tabelę, alertuj o nowych wpisach i utrzymuj procedurę ponawiania. Przy integracjach kluczowa jest idempotencja — żeby ponowienie nie zdublowało operacji.

Czy kolejki są trudne w utrzymaniu?

Same kolejki nie — trudne bywa ich monitorowanie i obsługa awarii zewnętrznych API. Dlatego w produkcji łączymy kolejki z Horizonem, alertami i procedurami retry. To standard, który opisujemy w usłudze utrzymania i modernizacji kodu.


👉 Twoja aplikacja zwalnia albo gubi zadania przy błędach API? Opisz projekt na kontakt@informatix.com.pl lub przez formularz — wycena jest bezpłatna.

📖 Zobacz również: optymalizacja wydajności aplikacji Laravel, integracje API i webhooki oraz CI/CD i DevOps dla Laravel.

Powiązane wpisy

12.10.2026

Strony internetowe dla firm — ile kosztują i jak je zamówić? [2026]

Strona internetowa dla firmy to wizytówka, kanał sprzedaży i narzędzie budowania zaufania. W 2026 roku jej wykonanie kosztuje od 0–600 zł rocznie w kreatorze, przez 1 500–8 000 zł netto za projekt na WordPressie, do 12 000–50 000 zł i więcej za dedykowany serwis z CRM lub ERP. Poznaj modele, koszty, proces i kryteria wyboru wykonawcy.

Czytaj dalej