PHP Conference Nagoya 2025

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 loop, 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 __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étodos herdados */
public EvWatcher::feed( int $revents ): void
public EvWatcher::invoke( int $revents ): void
public EvWatcher::keepalive( bool $value = ?): bool
public EvWatcher::setCallback( callable $callback ): 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

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top