Класс EvLoop

(PECL ev >= 0.2.0)

Введение

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

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

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

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

final EvLoop {
/* Свойства */
public $data ;
public $backend ;
public $iteration ;
public $pending ;
public $io_interval ;
public $depth ;
/* Методы */
public backend ( ) : int
final public check ( string $callback , string $data = ? , string $priority = ? ) : EvCheck
final public child ( string $pid , string $trace , string $callback , string $data = ? , string $priority = ? ) : EvChild
public __construct ( int $flags = ? , mixed $data = NULL , float $io_interval = 0.0 , float $timeout_interval = 0.0 )
public static defaultLoop ( int $flags = Ev::FLAG_AUTO , mixed $data = NULL , float $io_interval = 0. , float $timeout_interval = 0. ) : EvLoop
final public embed ( string $other , string $callback = ? , string $data = ? , string $priority = ? ) : EvEmbed
final public fork ( callable $callback , mixed $data = null , int $priority = 0 ) : EvFork
final public idle ( callable $callback , mixed $data = null , int $priority = 0 ) : EvIdle
public invokePending ( ) : void
final public io ( mixed $fd , int $events , callable $callback , mixed $data = null , int $priority = 0 ) : EvIo
public loopFork ( ) : void
public now ( ) : float
public nowUpdate ( ) : void
final public periodic ( float $offset , float $interval , callable $callback , mixed $data = null , int $priority = 0 ) : EvPeriodic
final public prepare ( callable $callback , mixed $data = null , int $priority = 0 ) : EvPrepare
public resume ( ) : void
public run ( int $flags = 0 ) : void
final public signal ( int $signum , callable $callback , mixed $data = null , int $priority = 0 ) : EvSignal
final public stat ( string $path , float $interval , callable $callback , mixed $data = null , int $priority = 0 ) : EvStat
public stop ( int $how = ? ) : void
public suspend ( ) : void
final public timer ( float $after , float $repeat , callable $callback , mixed $data = null , int $priority = 0 ) : EvTimer
public 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 тратить больше времени для сбора таймаутов за счет увеличения задержек/джиттеров/неточностей (функция обратного вызова наблюдателя будет вызвана позже). Наблюдатели 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 — Выполняет внутренние проверки согласованности (для отладки)