Skip to main content

Izabrani projekti

phpfilebroker

Filesystem kao message broker — exchanges, streams, dead letters, retries, metrike.

  • PHP 8.4
  • POSIX file locks
  • inotify

Problem

Većini “malih” PHP aplikacija treba red. Većina tih aplikacija ne zaslužuje RabbitMQ/Kafka/NATS u svojim zavisnostima. Shared host ih često ni nema.

phpfilebroker pretvara filesystem u pravi broker — sa svim što očekujete: exchanges, persistent streams, consumer groups, priority queues, dead letters, retries i metrike.

Arhitektura

  • Pure PHP 8.4. Bez eksternih servisa.
  • Streams su append-only direktorijumi. Poruke su pojedinačni fajlovi. Atomski rename(2) daje transakcionu semantiku.
  • POSIX file lock-ovi + inotify (gde postoji) — consumer-group fan-out bez polling overhead-a.
  • Per-stream priority lanes; visibility timeout konfigurisan po consumer-u.

Ključno

  • DLQ + retries sa eksponencijalnim backoff-om kao first-class.
  • Consumer groups sa at-least-once isporukom; idempotency hook u consumer interfejsu.
  • Prometheus-kompatibilan metrics endpoint ugrađen — depth, age, retry counters, DLQ size.
  • Crash-safe: svaka tranzicija je jedan rename(2), atomski na POSIX-u.

Rezultati

Drop-in zamena tamo gde “treba RabbitMQ, ali imamo shared hosting”. Pod opterećenjem na Hetzner VPS-u — hiljade msg/sec.

Lekcije

  • Filesystem je potcenjena baza. POSIX daje više nego što ljudi misle.
  • “Dosadni alati” pobeđuju kad je operativna površina mala.