CloudCastle Clock

🇷🇺 Русский · 🇬🇧 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🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
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🏆 540000

← Retour à la liste des fonctionnalités


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