Класс EvLoop
(PECL ev >= 0.2.0)
Введение
Представляет событийный цикл, который всегда отличается от цикла по умолчанию. В отличие от цикла по умолчанию, он не может работать с наблюдателями EvChild.
Если доступна работа с потоками исполнения, то необходимо создать цикл для каждого потока используя в качестве родителя цикл по умолчанию.
Событийный цикл по умолчанию инициализируется автоматически с помощью Ev. Он доступен с помощью методов класса Ev или с помощью метода EvLoop::defaultLoop().
Обзор классов
$pid
,
string
$trace
,
string
$callback
,
string
$data
= ?
,
string
$priority
= ?
) : EvChild$flags
= ?
,
mixed
$data
= NULL
,
float
$io_interval
= 0.0
,
float
$timeout_interval
= 0.0
)$flags
= Ev::FLAG_AUTO
,
mixed
$data
= NULL
,
float
$io_interval
= 0.
,
float
$timeout_interval
= 0.
) : EvLoop$other
,
string
$callback
= ?
,
string
$data
= ?
,
string
$priority
= ?
) : EvEmbed$fd
,
int
$events
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
) : EvIo$offset
,
float
$interval
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
) : EvPeriodic$signum
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
) : EvSignal$path
,
float
$interval
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
) : EvStatСвойства
- 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 — Выполняет внутренние проверки согласованности (для отладки)