(PECL event >= 1.2.6-beta)
Класс EventBase представляет структуру событийной базы модуля libevent. Он содержит набор событий и может их опрашивать для определения, какие из них активны.
Каждая событийная база имеет
метод
или
бэкенд, которые используются для
определения готовых событий. Используемые методы:
select
,
poll
,
epoll
,
kqueue
,
devpoll
,
evport
и
win32
.
Для настройки событийной базы или для исключения определённых бэкендов можно использовать класс EventConfig.
НЕ
разрушайте объект
EventBase
пока не освобождены связанные с Event
ресурсы.
В противном случае это приведёт к непредсказуемым результатам!
EventBase::LOOP_ONCE
Флаг используется с методом EventBase::loop() и означает: «блокировать, пока модуль libevent не получит активное событие, а затем выйти после завершения callback-функции для всех активных событий».
EventBase::LOOP_NONBLOCK
Флаг используется с методом EventBase::loop() и означает: «не блокировать: посмотреть, какие события уже готовы, запустить обратные вызовы с наивысшим приоритетом, затем выйти».
EventBase::NOLOCK
Флаг конфигурации. Не выделять блокировку для событийной базы, даже если блокирование настроено.
EventBase::STARTUP_IOCP
Флаг конфигурации только для ОС Windows. Разрешает диспетчер IOCP при старте.
EventBase::NO_CACHE_TIME
Флаг конфигурации. Вместо проверки текущего времени каждый раз, когда цикл готов запустить функцию обратного вызова по таймеру, проверять его после каждого вызова такой функции.
EventBase::EPOLL_USE_CHANGELIST
Если используется бэкенд
epoll
, этот флаг сообщает, что можно безопасно использовать внутренний код
списка изменений Libevent для пакетного добавления и удаления в целях
минимизации количества системных вызовов.
Установка этого флага может повысить производительность, но может привести к проявлению бага Linux: не безопасно использовать этот флаг, если любой из файловых дескрипторов был клонирован с помощью dup() или его аналогов. Может привести к странным и трудно диагностируемым ошибкам.
Этот флаг также может быть активирован установкой переменной
окружения EVENT_EPOLL_USE_CHANGELIST
.
Этот флаг не действует, если вы используете любой бэкенд, кроме
epoll
.