# A classe EvLoop

(PECL ev >= 0.2.0)

## Introdução

Representa um laço de eventos que é sempre distinto do laço padrão. Ao contrário do laço padrão, ele não pode lidar com observadores EvChild.

Tendo threads, temos que criar um laço por thread e usar o laço padrão no thread pai.

O laço de eventos padrão é inicializado automaticamente por Ev. É acessível através de métodos da classe Ev, ou através do método EvLoop::defaultLoop().

## Resumo da classe

final class EvLoop {
/* Propriedades */
public $data;
public $backend;
public $is_default_loop;
public $iteration;
public $pending;
public $io_interval;
public $timeout_interval;
public $depth;
/* Métodos */
public function __construct(
int `$flags` = ?,
mixed `$data` = NULL ,
float `$io_interval` = 0.0 ,
float `$timeout_interval` = 0.0
)
public function backend(): int
final public function check( string `$callback` , string `$data` = ?, string `$priority` = ?): EvCheck
final public function child(
string `$pid` ,
string `$trace` ,
string `$callback` ,
string `$data` = ?,
string `$priority` = ?
): EvChild
public static function defaultLoop(
int `$flags` = Ev::FLAG_AUTO ,
mixed `$data` = NULL ,
float `$io_interval` = 0. ,
float `$timeout_interval` = 0.
): EvLoop
final public function embed(
string `$other` ,
string `$callback` = ?,
string `$data` = ?,
string `$priority` = ?
): EvEmbed
final public function fork( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 ): EvFork
final public function idle( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 ): EvIdle
public function invokePending(): void
final public function io(
mixed `$fd` ,
int `$events` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvIo
public function loopFork(): void
public function now(): float
public function nowUpdate(): void
final public function periodic(
float `$offset` ,
float `$interval` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvPeriodic
final public function prepare( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 ): EvPrepare
public function resume(): void
public function run( int `$flags` = 0 ): void
final public function signal(
int `$signum` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvSignal
final public function stat(
string `$path` ,
float `$interval` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvStat
public function stop( int `$how` = ?): void
public function suspend(): void
final public function timer(
float `$after` ,
float `$repeat` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvTimer
public function verify(): void
}

## Propriedades

data
  Dados personalizados anexados ao laço
backend
  Somente Leitura. As opções de backend indicando o backend do evento em uso.
is_default_loop
  Somente Leitura. `true` se for o laço de eventos padrão.
iteration
  A contagem de iterações atuais do laço. Veja Ev::iteration()
pending
  O número de observadores pendentes. `0` indica que não há observadores pendentes.
io_interval
  Um io_interval mais alto permite que libev gaste mais tempo coletando eventos EvIo, para que mais eventos possam ser tratados por iteração, ao custo de aumentar a latência. Os tempos limite (EvPeriodic e EvTimer) não serão afetados. Definir isso com um valor diferente de zero introduzirá uma chamada `sleep()` adicional na maioria das iterações de laço. O tempo de suspensão garante que libev não pesquisará eventos EvIo mais de uma vez por esse intervalo, em média. Muitos programas geralmente podem se beneficiar configurando o io_interval para um valor próximo de `0.1`, o que geralmente é suficiente para servidores interativos (não para jogos). Geralmente não faz muito sentido defini-lo com um valor inferior a `0.01`, pois isso se aproxima da granularidade de tempo da maioria dos sistemas. Veja também » FUNÇÕES DE CONTROLE DE LAÇOS DE EVENTOS.
timeout_interval
  Um timeout_interval maior permite que libev gaste mais tempo coletando tempos limite, às custas de maior latência/jitter/inexatidão (o retorno de chamada do inspetor será chamado mais tarde). Os observadores de EvIo não serão afetados. Definir isso como um valor não nulo não introduzirá nenhuma sobrecarga no libev. Veja também » FUNÇÕES DE CONTROLE DE LAÇOS DE EVENTOS.
depth
  A profundidade da recursão. Veja Ev::depth().

## Índice

- EvLoop::backend — Retorna um inteiro descrevendo o backend usado por libev
- EvLoop::check — Cria o objeto EvCheck associado à instância atual do laço de eventos
- EvLoop::child — Cria o objeto EvChild associado ao laço de eventos atual
- EvLoop::__construct — Constrói o objeto de laço de eventos
- EvLoop::defaultLoop — Retorna ou cria o laço de eventos padrão
- EvLoop::embed — Cria uma instância do observador EvEmbed associado ao objeto EvLoop atual
- EvLoop::fork — Cria um objeto observador EvFork associado à instância atual do laço de eventos
- EvLoop::idle — Cria objeto observador EvIdle associado à instância de laço de evento atual
- EvLoop::invokePending — Invoca todos os observadores pendentes enquanto redefine seu estado pendente
- EvLoop::io — Cria objeto observador EvIo associado à instância de laço de evento atual
- EvLoop::loopFork — Deve ser chamado após um fork
- EvLoop::now — Retorna o "horário do laço de eventos" atual
- EvLoop::nowUpdate — Estabelece o horário atual consultando o kernel, atualizando o horário retornado por EvLoop::now no progresso
- EvLoop::periodic — Cria um objeto observador EvPeriodic associado à instância atual do laço de eventos
- EvLoop::prepare — Cria um objeto observador EvPrepare associado à instância atual do laço de eventos
- EvLoop::resume — Retoma o laço de eventos padrão suspenso anteriormente
- EvLoop::run — Começa a verificar eventos e chamar funções de retorno para o laço
- EvLoop::signal — Cria um objeto observador EvSignal associado à instância atual do laço de eventos
- EvLoop::stat — Cria objeto observador EvStat associado à instância de laço de evento atual
- EvLoop::stop — Interrompe o laço de eventos
- EvLoop::suspend — Suspende o laço
- EvLoop::timer — Cria objeto observador EvTimer associado à instância de laço de evento atual
- EvLoop::verify — Executa verificações de consistência interna (para depuração)

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