🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
MonotonicClock — reloj monótono
Propósito
Las lecturas no decrecen ni siquiera cuando el reloj del sistema se atrasa (corrección NTP, cambio manual): el delta se obtiene de hrtime().
Para qué y cómo utilizarlo
Medición de intervalos, rate-limiting, tiempos de espera en procesos de larga duración (demonios, workers de colas).
Ejemplo
$clock = new MonotonicClock('UTC');
$start = $clock->microtime();
// ... the system clock is moved backwards ...
$elapsed = $clock->microtime() - $start; // still >= 0
Antipatrones
No sirve para el tiempo «de pared»: las lecturas divergen del reloj real después de ajustarlo.
Ciclo de vida
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
Comparación de la característica con análogos
| Aspecto | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Resistencia al retroceso del reloj del sistema | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Base de nanosegundos (hrtime) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Contrato de reloj completo (timestamp/microtime) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Zona horaria de salida arbitraria | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
sleep()/sleepUntil() reales con reanudación tras una señal | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Total | 🏆 5 | 4 | 0 | 0 | 0 | 0 |
← A la lista de características
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano