🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
TruncatingClock — Kürzen von Zeitpunkten
Zweck
Dekorator: rundet die Messwerte auf die Grenze einer Einheit ab (TruncationUnit: Sekunde, Minute, Stunde, Tag...).
Wofür und wie zu verwenden
Cache-Schlüssel pro Minute, Gruppierung von Metriken nach Intervallen: TruncatingClock::toMinute($clock) — Parität mit beste MinuteClock, jedoch für jede beliebige Einheit.
Beispiel
$byMinute = TruncatingClock::toMinute(SystemClock::utc());
$byHour = new TruncatingClock(SystemClock::utc(), TruncationUnit::Hour);
$key = 'stats:' . $byHour->now()->format('YmdH');
Anti-Patterns
Nicht für präzise Ereignis-Zeitstempel — Mikrosekunden werden bewusst verworfen.
Lebenszyklus
flowchart LR
A[Inner clock] -->|12:34:56.789| B[TruncatingClock unit=Minute]
B -->|12:34:00.000| C[Consumer]
Funktionsvergleich mit Alternativen
| Aspekt | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Beliebige Kürzungseinheit | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Kürzen auf eine Minute | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| Dekorator über beliebige Uhr | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| Günstiges timestamp() ohne Objekt | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Gesamt | 🏆 4 | 0 | 0 | 0 | 2 | 0 |
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano