A classe EvTimer
(PECL ev >= 0.2.0)
Introdução
Os observadores EvTimer são temporizadores relativos simples que geram um evento após um determinado tempo e, opcionalmente, repetem-se em intervalos regulares depois disso.
Os cronômetros são baseados em tempo real, ou seja, se alguém registrar um evento que expire após uma hora e redefinir o relógio do sistema para janeiro do ano passado, o tempo limite ainda expirará após (aproximadamente) uma hora . "Aproximadamente" porque detectar saltos no tempo é difícil e algumas imprecisões são inevitáveis.
É garantido que o retorno de chamada seja invocado somente após o tempo limite ter passado (não em, portanto, em sistemas com relógios de resolução muito baixa, isso pode introduzir um pequeno atraso). 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 de mesma prioridade com valores de tempo limite posteriores (mas isso não é mais verdade quando um retorno de chamada chama EvLoop:: execute() recursivamente).
O próprio cronômetro fará o melhor esforço para evitar desvios, ou seja, se um
cronômetro estiver configurado para disparar a cada
10
segundos, ele normalmente disparará exatamente em intervalos de
10
segundos. Se, no entanto, o script não conseguir acompanhar o cronômetro
porque leva mais do que esses
10
segundos para fazer isso, o cronômetro não será acionado mais de uma vez por iteração do loop
de eventos.
Resumo da classe
float
$after
,float
$repeat
,callable
$callback
,mixed
$data
= null
,int
$priority
= 0
)
float
$after
,float
$repeat
,callable
$callback
,mixed
$data
= null
,int
$priority
= 0
): EvTimer
Propriedades
- repeat
-
Se a repetição for
0.0
, ela será interrompida automaticamente quando o tempo limite for atingido. Se for positivo, o temporizador será automaticamente configurado para disparar novamente a cada repetição, segundos depois, até ser interrompido manualmente. - remaining
-
Retorna o tempo restante até que um cronômetro seja acionado. Se o temporizador estiver ativo, esse tempo será relativo ao tempo atual do loop de eventos, caso contrário, será o valor de tempo limite atualmente configurado.
Isto é, depois de instanciar um EvTimer com um valor
after
de5.0
e um valorrepeat
de7.0
, remaining retorna5.0
. Quando o cronômetro for iniciado e um segundo passar, remaining retornará4.0
. Quando o cronômetro expirar e for reiniciado, ele retornará aproximadamente7.0
(provavelmente um pouco menos, pois a invocação de retorno de chamada também leva algum tempo) e assim por diante.
Table of Contents
- EvTimer::again — Restarts the timer watcher
- EvTimer::__construct — Constructs an EvTimer watcher object
- EvTimer::createStopped — Creates EvTimer stopped watcher object
- EvTimer::set — Configures the watcher