CloudCastle Clock

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

MonotonicClock — orologio monotòno

Scopo

Le letture non diminuiscono mai, anche quando l'orologio di sistema viene riportato indietro (correzione NTP, modifica manuale): il delta proviene da hrtime().

A cosa serve e come usarlo

Misurazione di intervalli, rate limiting, timeout in processi a lunga durata (demoni, worker di code).

Esempio

$clock = new MonotonicClock('UTC');
$start = $clock->microtime();
// ... the system clock is moved backwards ...
$elapsed = $clock->microtime() - $start;   // still >= 0

Anti-pattern

Non è adatto al tempo «da parete»: le letture divergono dall'orologio reale dopo la sua modifica.

Ciclo di vita

stateDiagram-v2
    [*] --> Anchored: new MonotonicClock()
    Anchored --> Reading: now() = anchor + hrtime delta
    Reading --> Reading: monotonic growth
    note right of Reading: system clock jumps\ndo not affect readings

Confronto della funzionalità con gli analoghi

Aspetto🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Resistenza al ripristino indietro dell'orologio di sistema✅✅❌❌❌❌
Base al nanosecondo (hrtime)✅✅❌❌❌❌
Contratto completo dell'orologio (timestamp/microtime)✅❌❌❌❌❌
Fuso orario di uscita arbitrario✅✅❌❌❌❌
sleep()/sleepUntil() reali con ripresa dopo un segnale✅✅❌❌❌❌
Totale🏆 540000

← Torna all'elenco delle funzionalità


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