🇷🇺 Русский · 🇬🇧 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 | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| 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 | 🏆 5 | 4 | 0 | 0 | 0 | 0 |
← Torna all'elenco delle funzionalità
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano