Skip to content

62. Kolejki zadań (job queues) — wzorzec producent-konsument w PHP

This content is not available in your language yet.

Kolejki zadań (Job Queues)

Kolejka zadań pozwala odłożyć kosztowne operacje (wysyłka e-maila, generowanie raportu, resize zdjęcia) poza czas obsługi żądania HTTP. Użytkownik dostaje odpowiedź natychmiast, a zadanie jest wykonywane w tle przez workera. Redis lub Beanstalkd są popularnym backendem kolejek PHP.

  • Wysyłka e-maila w żądaniu HTTP spowalnia ładowanie strony
  • Laravel Queues używają dokładnie tego wzorca
  • Skalowanie przez dodanie workerów jest łatwe
  1. Wyjaśnić problem synchronicznego wykonywania długich operacji
  2. Opisać wzorzec producent-konsument
  3. Omówić backend kolejki: Redis vs plik JSON (prosty)
  4. Pokazać implementację prostego workera PHP
  1. Problem synchroniczny: wysyłka e-maila w request = 2 sekundy opóźnienia
  2. Wzorzec producent-konsument — producer dodaje, consumer przetwarza
  3. Diagram przepływu: HTTP → producent → kolejka → worker → wynik
  4. Backend kolejki: plik JSON (edukacyjny), Redis (produkcja)
  5. Struktura zadania: typ, payload, created_at, status
  6. Worker: pętla while(true), pobierz → przetwórz → oznacz jako done
  7. Obsługa błędów: dead letter queue, retry

Przykład 1

Producent: dodawanie zadania do kolejki JSON

Przykład 2

Worker: pętla przetwarzająca zadania

Przykład 3

Diagram: HTTP → Queue → Worker → Email
  1. Wstęp — problem długich operacji w HTTP
  2. Wzorzec producent-konsument
  3. Architektura systemu kolejkowego
  4. Prosta implementacja z plikiem JSON
  5. Redis jako backend
  6. Worker PHP
  7. Obsługa błędów
  8. Podsumowanie i bibliografia

Prosta kolejka w pliku JSON!

Zaimplementuj producenta (doda zadanie do pliku JSON) i workera (odczyta i przetworzy). To wystarczy na świetne opracowanie.