Skip to main content

Избранное

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 даёт больше, чем кажется.
  • “Скучные инструменты” побеждают, когда операционная поверхность маленькая.