# A classe EvPeriodic

(PECL ev >= 0.2.0)

## Introdução

Os observadores periódicos também são uma espécie de cronômetros, mas são muito versáteis.

Ao contrário do EvTimer, os observadores EvPeriodic não são baseados em tempo real (ou tempo relativo, o tempo físico que passa), mas no tempo do relógio de parede (tempo absoluto, calendário ou relógio). A diferença é que o tempo do relógio de parede pode ser mais rápido ou mais lento que o tempo real, e os saltos no tempo não são incomuns (por exemplo, ao ajustá-lo).

O observador EvPeriodic p ode ser configurado para ser acionado após algum momento específico. Por exemplo, se um observador EvPeriodic estiver configurado para acionar "em 10 segundos" (por exemplo, EvLoop::now() + `10.0`, ou seja, um tempo absoluto, não um atraso), e o relógio do sistema for redefinido para janeiro do ano anterior, então levará um ano ou mais para acionar o evento (diferentemente de um EvTimer, que ainda seria acionado aproximadamente `10` segundos após iniciá-lo, pois usa um tempo limite relativo).

Assim como com os temporizadores, é garantido que o retorno de chamada seja invocado somente quando o momento em que ele deveria ser acionado tiver passado. Se vários temporizadores ficarem prontos durante a mesma iteração do laço, então aqueles com valores de tempo limite anteriores serão invocados antes daqueles com valores de tempo limite posteriores (mas isso não é mais verdade quando um retorno de chamada chama EvLoop::run() recursivamente).

## Resumo da classe

class EvPeriodic extends EvWatcher {
/* Propriedades */
public $offset;
public $interval;
/* Propriedades herdadas */
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 herdados */
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
}

## Propriedades

offset
  Ao repetir, contém o valor de deslocamento, caso contrário, este é o ponto absoluto no tempo (o valor de deslocamento passado para EvPeriodic::set(), embora libev possa modificar este valor para melhor estabilidade numérica).
interval
  O valor do intervalo atual. Pode ser modificado a qualquer momento, mas as alterações só terão efeito quando o cronômetro periódico for acionado ou EvPeriodic::again() estiver sendo chamado.

## Índice

- EvPeriodic::again — Simplesmente para e reinicia o observador periódico novamente
- EvPeriodic::at — Retorna o tempo absoluto em que este observador deve disparar em seguida
- EvPeriodic::__construct — Constrói objeto observador EvPeriodic
- EvPeriodic::createStopped — Cria um observador EvPeriodic parado
- EvPeriodic::set — Configura o observador

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