CloudCastle Clock

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

TruncatingClock — усечение моментов

Назначение

Декоратор: округляет показания вниз до границы единицы (TruncationUnit: секунда, минута, час, сутки...).

Для чего и как применять

Ключи кэша по минутам, группировка метрик по интервалам: TruncatingClock::toMinute($clock) — паритет с beste MinuteClock, но для любой единицы.

Пример

$byMinute = TruncatingClock::toMinute(SystemClock::utc());
$byHour = new TruncatingClock(SystemClock::utc(), TruncationUnit::Hour);
$key = 'stats:' . $byHour->now()->format('YmdH');

Анти-паттерны

Не для точных меток событий — микросекунды сознательно отбрасываются.

Жизненный цикл

flowchart LR
    A[Inner clock] -->|12:34:56.789| B[TruncatingClock unit=Minute]
    B -->|12:34:00.000| C[Consumer]

Сравнение возможности с аналогами

Аспект🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Произвольная единица усечения✅❌❌❌❌❌
Усечение до минуты✅❌❌❌✅❌
Декоратор над любыми часами✅❌❌❌✅❌
Дешёвый timestamp() без объекта✅❌❌❌❌❌
Всего🏆 400020

← К списку возможностей


🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano