# Класс EvLoop

(PECL ev >= 0.2.0)

## Введение

Представляет событийный цикл, который всегда отличается от цикла по умолчанию. В отличие от цикла по умолчанию, он не может работать с наблюдателями EvChild.

Если доступна работа с потоками исполнения, то необходимо создать цикл для каждого потока используя в качестве родителя цикл по умолчанию.

Событийный цикл по умолчанию инициализируется автоматически с помощью Ev. Он доступен через методы класса Ev или через метод EvLoop::defaultLoop().

## Обзор класса

final class EvLoop {
/* Свойства */
public $data;
public $backend;
public $is_default_loop;
public $iteration;
public $pending;
public $io_interval;
public $timeout_interval;
public $depth;
/* Методы */
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
}

## Свойства

data
  Произвольные данные, которые добавили циклу
backend
  Только чтение. Флаги бэкенда, которые указывают, какой событийный бэкенд используется.
is_default_loop
  Только чтение. Если установили значение `true`, то это цикл по умолчанию.
iteration
  Текущий счётчик итераций. Смотри Ev::iteration()
pending
  Количество ожидающих наблюдателей. Значение `0` указывает, что ожидающих наблюдателей нет.
io_interval
  Более высокие значения io_interval разрешают модулю libev тратить больше времени для сбора событий EvIo, что позволит обработать больше событий за одну итерацию заплатив за это увеличенными задержками. Время ожидания (и EvPeriodic и EvTimer) не будет затронуто. Установка в ненулевое значение добавить дополнительный вызов `sleep()` в большинство итераций цикла. Время сна гарантирует, что libev не будет передавать события EvIo чаще, чем один раз за этот период, в среднем. Для большинства программ хорошим значением io_interval будет значение около `0.1`, этого достаточно для большинства интерактивных серверов (не для игр). Обычно разница незаметна, если установили значение меньше `0.01`, поскольку это значение будет близко к минимальному интервалу вычисляемого времени для большинства систем. Также читайте » ФУНКЦИИ УПРАВЛЕНИЯ СОБЫТИЙНЫМИ ЦИКЛАМИ.
timeout_interval
  Более высокие значения timeout_interval позволят libev тратить больше времени для сбора превышенного времени ожидания за счёт увеличения задержек, джиттеров или неточностей (callback-функция наблюдателя будет вызвана позже). Наблюдатели EvIo не будут затронуты. Увеличение этого значение не вызовет перерасхода ресурсов в libev. Также читайте » ФУНКЦИИ УПРАВЛЕНИЯ СОБЫТИЙНЫМИ ЦИКЛАМИ.
depth
  Глубина рекурсии. Смотрите описание метода Ev::depth().

## Содержание

- EvLoop::backend — Возвращает целое число, описывающее бэкенд, используемый libev
- EvLoop::check — Создаёт объект EvCheck, связанный с текущим экземпляром цикла событий
- EvLoop::child — Создаёт объект EvChild, связанный с текущим циклом событий
- EvLoop::__construct — Конструктор объекта цикла событий
- EvLoop::defaultLoop — Возвращает или создаёт цикл событий по умолчанию
- EvLoop::embed — Создаёт экземпляр наблюдателя EvEmbed, связанный с текущим объектом EvLoop
- EvLoop::fork — Создаёт объект наблюдателя EvFork, связанный с текущим экземпляром цикла событий
- EvLoop::idle — Создаёт объект наблюдателя EvIdle, связанный с текущим экземпляром цикла событий
- EvLoop::invokePending — Вызывает всех ожидающих наблюдателей при сбросе их отложенного состояния
- EvLoop::io — Создаёт объект наблюдателя EvIo, связанный с текущим экземпляром цикла событий
- EvLoop::loopFork — Вызывается после разветления
- EvLoop::now — Возвращает текущее "event loop time"
- EvLoop::nowUpdate — Устанавливает текущее время, запрашивая ядро, обновляя время, возвращаемое EvLoop::now в процессе
- EvLoop::periodic — Создаёт объект наблюдателя EvPeriodic, связанный с текущим экземпляром цикла событий
- EvLoop::prepare — Создаёт объект наблюдателя EvPrepare, связанный с текущим экземпляром цикла событий
- EvLoop::resume — Возобновляет ранее приостановленный цикл событий
- EvLoop::run — Проверяет события и вызывает callback-функции в цикле
- EvLoop::signal — Создаёт объект наблюдателя EvSignal, связанный с текущим экземпляром цикла событий
- EvLoop::stat — Создаёт объект наблюдателя EvStat, связанный с текущим экземпляром цикла событий
- EvLoop::stop — Останавливает цикл событий
- EvLoop::suspend — Приостанавливает цикл
- EvLoop::timer — Создаёт объект наблюдателя EvTimer, связанный с текущим экземпляром цикла событий
- EvLoop::verify — Выполняет внутренние проверки согласованности (для отладки)

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