# La classe EvPeriodic

(PECL ev >= 0.2.0)

## Introduction

Les watchers périodiques sont des sortes de minuteurs, mais ils sont très polyvalents.

Contrairement à EvTimer, les watchers EvPeriodic ne sont pas basés sur un temps réel (ou un temps relatif, le temps physique qui passe), mais sur un temps d'horloge (temps absolu, calendaire, ou d'horloge). La différence est qu'un temps d'horloge peut être plus rapide ou plus lent qu'un temps réel, et les sauts dans le temps ne sont pas rares (i.e. lors d'un ajustement).

Un watcher EvPeriodic peut être configuré pour être lancé après des points spécifiques dans le temps. Par exemple, si un watcher EvPeriodic est configuré pour se lancer "dans 10 secondes" (i.e. EvLoop::now() + `10.0`, i.e. un temps absolu, et non un délai), et que l'horloge système est ré-initialisée à Janvier de l'année dernière, alors cela prendra une année et plus à lancer l'événement (contrairement à EvTimer qui sera lancé `10` secondes après son démarrage, sachant qu'il utilise un délai maximal d'attente relatif).

Comme pour les minuteurs, il est garantie que la fonction de rappel soit appelée uniquement lorsque le point dans le temps où il est supposé se lancer ne soit passé. Si plusieurs minuteurs deviennent prêts en même temps pendant la même itération de boucle, alors ceux dont les valeurs de délai maximal d'attente sont les plus proches seront appelées avant ceux qui ont des valeurs de délai maximal d'attente plus éloignés (mais ceci n'est plus vrai lorsqu'une fonction de rappel appelle récursivement la méthode EvLoop::run()).

## Synopsis de la classe

class EvPeriodic extends EvWatcher {
/* Propriétés */
public $offset;
public $interval;
/* Propriétés héritées */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Méthodes */
public __construct(
float `$offset` ,
string `$interval` ,
callable `$reschedule_cb` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
)
public again(): void
public at(): float
final public static createStopped(
float `$offset` ,
float `$interval` ,
callable `$reschedule_cb` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvPeriodic
public set( float `$offset` , float `$interval` ): void
/* Méthodes héritées */
public EvWatcher::clear(): int
public EvWatcher::feed( int `$revents` ): void
public EvWatcher::getLoop(): EvLoop
public EvWatcher::invoke( int `$revents` ): void
public EvWatcher::keepalive( bool `$value` = ?): bool
public EvWatcher::setCallback( callable `$callback` ): void
public EvWatcher::start(): void
public EvWatcher::stop(): void
}

## Propriétés

offset

  Lors de la répétition, va contenir la valeur de la position, sinon, ce sera le point absolu dans le temps (la valeur de la position passée à la méthode EvPeriodic::set(), bien que libev peut modifier cette valeur pour une meilleure stabilité numérique).

interval

  La valeur de l'intervalle courant. Peut être modifié à tout moment, mais les modifications ne prennent effet que lorsque le minuteur périodique ne se lance, ou lorsque la méthode EvPeriodic::again() est appelée.

## Sommaire

- EvPeriodic::again — Arrête et re-démarre le watcher périodique
- EvPeriodic::at — Retourne le temps absolu auquel ce watcher sera appelé la prochaine fois
- EvPeriodic::__construct — Construit un objet watcher EvPeriodic
- EvPeriodic::createStopped — Crée un watcher EvPeriodic stoppé
- EvPeriodic::set — Configure le watcher