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.