CakeFest 2024: The Official CakePHP Conference

Класс EvLoop

(PECL ev >= 0.2.0)

Введение

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

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

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

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

final class EvLoop {
/* Свойства */
public $data;
public $backend;
public $iteration;
public $pending;
public $io_interval;
public $depth;
/* Методы */
public __construct(
     int $flags = ?,
     mixed $data = NULL ,
     float $io_interval = 0.0 ,
     float $timeout_interval = 0.0
)
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 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
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 — Выполняет внутренние проверки согласованности (для отладки)
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top