Избранное
phpfilebroker
Файловая система как брокер сообщений — exchanges, streams, dead letters, retries, метрики.
- PHP 8.4
- POSIX file locks
- inotify
Проблема
Большинству “маленьких” PHP-приложений нужна очередь. Большинство этих же приложений не заслуживают RabbitMQ/Kafka/NATS в зависимостях. На shared-хостинге их и нет.
phpfilebroker превращает файловую систему в настоящий брокер — со всем, что ждёшь: exchanges, persistent streams, consumer groups, priority queues, dead letters, retries и метрики.
Архитектура
- Чистый PHP 8.4. Zero внешних сервисов.
- Streams — append-only директории. Сообщения — отдельные файлы. Атомарные
rename(2)дают транзакционные семантики. - POSIX-локи +
inotify(где есть) — fan-out на consumer groups без polling-overhead. - Per-stream priority lanes; visibility timeout настраивается на consumer.
Ключевое
- DLQ + retries с экспоненциальным backoff как first-class примитив.
- Consumer groups с at-least-once доставкой; idempotency-хуки в интерфейсе consumer’а.
- Prometheus-метрики встроены — depth, age, retry counters, DLQ size.
- Crash-safe: каждый переход — одно
rename(2), атомарное на POSIX.
Результаты
Drop-in замена там, где “нужен RabbitMQ, но shared-хостинг”. Под нагрузкой на Hetzner VPS — тысячи msg/sec.
Уроки
- Файловая система — недооценённая БД. POSIX даёт больше, чем кажется.
- “Скучные инструменты” побеждают, когда операционная поверхность маленькая.