Класс EvLoop

(PECL ev >= 0.2.0)

Введение

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

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

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

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

finalclassEvLoop {
public$data;
public$backend;
public$iteration;
public$pending;
public$depth;
public__construct(
    int$flags = ?,
    mixed$data = NULL,
    float$io_interval = 0.0,
    float$timeout_interval = 0.0
)
publicbackend(): int
finalpubliccheck(string$callback, string$data = ?, string$priority = ?): EvCheck
finalpublicchild(
    string$pid,
    string$trace,
    string$callback,
    string$data = ?,
    string$priority = ?
): EvChild
publicstaticdefaultLoop(
    int$flags = Ev::FLAG_AUTO,
    mixed$data = NULL,
    float$io_interval = 0.,
    float$timeout_interval = 0.
): EvLoop
finalpublicembed(
    string$other,
    string$callback = ?,
    string$data = ?,
    string$priority = ?
): EvEmbed
finalpublicfork(callable$callback, mixed$data = null, int$priority = 0): EvFork
finalpublicidle(callable$callback, mixed$data = null, int$priority = 0): EvIdle
finalpublicio(
    mixed$fd,
    int$events,
    callable$callback,
    mixed$data = null,
    int$priority = 0
): EvIo
publicloopFork(): void
publicnow(): float
publicnowUpdate(): void
finalpublicperiodic(
    float$offset,
    float$interval,
    callable$callback,
    mixed$data = null,
    int$priority = 0
): EvPeriodic
finalpublicprepare(callable$callback, mixed$data = null, int$priority = 0): EvPrepare
publicresume(): void
publicrun(int$flags = 0): void
finalpublicsignal(
    int$signum,
    callable$callback,
    mixed$data = null,
    int$priority = 0
): EvSignal
finalpublicstat(
    string$path,
    float$interval,
    callable$callback,
    mixed$data = null,
    int$priority = 0
): EvStat
publicstop(int$how = ?): void
publicsuspend(): void
finalpublictimer(
    float$after,
    float$repeat,
    callable$callback,
    mixed$data = null,
    int$priority = 0
): EvTimer
publicverify(): 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 — Выполняет внутренние проверки согласованности (для отладки)
To Top