🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
MonotonicClock — horloge monotone
Objectif
Les lectures ne diminuent jamais, même lorsque l’horloge système est reculée (correction NTP, réglage manuel) : le delta provient de hrtime().
Utilité et mode d’emploi
Mesure d’intervalles, limitation de débit (rate limiting), délais d’attente dans les processus de longue durée (démons, workers de files).
Exemple
$clock = new MonotonicClock('UTC');
$start = $clock->microtime();
// ... the system clock is moved backwards ...
$elapsed = $clock->microtime() - $start; // still >= 0
Anti-modèles
Pas pour le temps « mural » (wall-clock) : les lectures divergent de l’horloge réelle après son réglage.
Cycle de vie
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
Comparaison des fonctionnalités avec les concurrents
| Aspect | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Résistance au recul de l’horloge système | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Base nanoseconde (hrtime) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Contrat d’horloge complet (timestamp/microtime) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Fuseau horaire de sortie arbitraire | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
sleep()/sleepUntil() réels avec reprise après un signal | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Total | 🏆 5 | 4 | 0 | 0 | 0 | 0 |
← Retour à la liste des fonctionnalités
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano