# La clase EvPeriodic

(PECL ev >= 0.2.0)

## Introducción

Los observadores periódicos son una especie de temporizadores, pero son muy versátiles.

A diferencia de EvTimer, los observadores EvPeriodic no se basan en un tiempo real (o un tiempo relativo, el tiempo físico que transcurre), sino en un tiempo de reloj (tiempo absoluto, calendario o de reloj). La diferencia es que un tiempo de reloj puede ser más rápido o más lento que un tiempo real, y los saltos en el tiempo no son raros (por ejemplo, durante un ajuste).

Un observador EvPeriodic puede ser configurado para ser lanzado después de puntos específicos en el tiempo. Por ejemplo, si un observador EvPeriodic está configurado para lanzarse "en 10 segundos" (es decir, EvLoop::now() + `10.0`, es decir, un tiempo absoluto, y no un retraso), y el reloj del sistema se reinicia a enero del año pasado, entonces tomará un año o más para lanzar el evento (a diferencia de EvTimer que se lanzará `10` segundos después de su inicio, ya que utiliza un retraso máximo relativo).

Al igual que con los temporizadores, se garantiza que la función de retrollamada sea llamada únicamente cuando el punto en el tiempo en el que se supone que debe lanzarse haya pasado. Si varios temporizadores se vuelven listos al mismo tiempo durante la misma iteración del bucle, entonces aquellos con valores de retraso máximo más cercanos serán llamados antes que aquellos con valores de retraso máximo más lejanos (pero esto ya no es cierto cuando una función de retrollamada llama recursivamente al método EvLoop::run()).

## Sinopsis de la Clase

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

## Propiedades

offset
  Al repetirse, contendrá el valor de la posición, de lo contrario, será el punto absoluto en el tiempo (el valor de la posición pasado al método EvPeriodic::set(), aunque libev puede modificar este valor para una mejor estabilidad numérica).
interval
  El valor del intervalo actual. Puede ser modificado en cualquier momento, pero los cambios no surten efecto hasta que el temporizador periódico no se lance, o cuando se llame al método EvPeriodic::again().

## Tabla de contenidos

- EvPeriodic::again — Detiene y reinicia el observador periódico
- EvPeriodic::at — Devuelve el tiempo absoluto en el que este watcher será llamado la próxima vez
- EvPeriodic::__construct — Construye un objeto watcher EvPeriodic
- EvPeriodic::createStopped — Crea un watcher EvPeriodic detenido
- EvPeriodic::set — Configura el watcher

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open