# La clase EvLoop

(PECL ev >= 0.2.0)

## Introducción

Representa un bucle de eventos que siempre es distinto del bucle por defecto. A diferencia del bucle por defecto, no puede gestionar los watchers EvChild.

Al utilizar hilos, se debe crear un bucle por hilo, y utilizar el bucle por defecto en el hilo padre.

El bucle de eventos por defecto es inicializado automáticamente por Ev. Es accesible a través de los métodos de la clase Ev o mediante el método EvLoop::defaultLoop().

## Sinopsis de la Clase

final class EvLoop {
/* Propiedades */
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
}

## Propiedades

data
  Datos personalizados para adjuntar al bucle
backend
  Solo lectura. Los flags del backend que indican el backend de eventos en uso.
is_default_loop
  Solo lectura. `true` si es el bucle de eventos por defecto.
iteration
  El contador de iteración actual del bucle. Ver el método Ev::iteration().
pending
  El número de watchers pendientes. `0` indica que no hay watchers pendientes.
io_interval
  Un valor alto para io_interval permite a libev pasar más tiempo recolectando los eventos EvIo, así, más eventos pueden ser gestionados por iteración, pero esto aumentará la latencia. Los tiempos de espera máximos (tanto para EvPeriodic como para EvTimer) no se verán afectados. Establecer esta opción a un valor distinto de cero introducirá una llamada adicional a `sleep()` en la mayoría de las iteraciones del bucle. El tiempo de pausa asegura que libev no consultará EvIo más de una vez durante este intervalo, en promedio. La mayoría de los programas pueden beneficiarse estableciendo io_interval a un valor cercano a `0.1`, lo cual es generalmente suficiente para los servidores interactivos (y no destinados a juegos). Generalmente no tiene sentido establecer este valor a menos de `0.01`, ya que se acerca a la granularidad a nivel de tiempos de la mayoría de los sistemas. Ver también las » funciones que controlan los bucles de eventos.
timeout_interval
  Un valor alto para timeout_interval permite a libev pasar más tiempo recolectando los tiempos de espera máximos, pero como consecuencia aumenta la latencia, el estrés y la inexactitud (la función de retrollamada del watcher será llamada más tarde). Los watchers EvIo no se verán afectados. Establecer este valor a un valor no nulo no introducirá ninguna sobrecarga adicional a libev. Ver también las » funciones que controlan los bucles de eventos.
depth
  La profundidad de la recursión. Ver el método Ev::depth().

## Tabla de contenidos

- EvLoop::backend — Retorna un integer que describe el backend utilizado por libev
- EvLoop::check — Crea un objeto EvCheck asociado con la instancia del bucle de eventos actual
- EvLoop::child — Crea un objeto EvChild asociado con el bucle de eventos actual
- EvLoop::__construct — Construye un objeto de bucle de eventos
- EvLoop::defaultLoop — Devuelve o crea el bucle de eventos por omisión
- EvLoop::embed — Crea una instancia del observador EvEmbed asociado con el objeto EvLoop actual
- EvLoop::fork — Crea un objeto EvFork watcher asociado con la instancia del bucle de eventos actual
- EvLoop::idle — Crea un objeto EvIdle watcher asociado con la instancia del bucle de eventos actual
- EvLoop::invokePending — Invoca todos los watchers pendientes mientras sus estados de cola no sean reinicializados
- EvLoop::io — Crea un objeto EvIo watcher asociado con la instancia del bucle de eventos actual
- EvLoop::loopFork — Debe ser llamado después de un fork
- EvLoop::now — Devuelve el "event loop time" actual
- EvLoop::nowUpdate — Establece el tiempo actual solicitándolo al kernel y actualiza el tiempo devuelto por EvLoop::now durante la ejecución
- EvLoop::periodic — Crea un objeto EvPeriodic watcher asociado con la instancia del bucle de eventos actual
- EvLoop::prepare — Crea un objeto EvPrepare watcher asociado con la instancia del bucle de eventos actual
- EvLoop::resume — Reanuda un bucle de eventos previamente detenido
- EvLoop::run — Comienza a verificar los eventos y a llamar a las funciones de retrollamada de la bucle
- EvLoop::signal — Crea un objeto EvSignal watcher asociado con la instancia del bucle de eventos actual
- EvLoop::stat — Crea un objeto EvStat watcher asociado con la instancia del bucle de eventos actual
- EvLoop::stop — Detiene el bucle de eventos
- EvLoop::suspend — Suspende el bucle
- EvLoop::timer — Crea un objeto EvTimer watcher asociado con la instancia del bucle de eventos actual
- EvLoop::verify — Realiza verificaciones de consistencia interna (para la depuración)

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