PHP 7.2.7 Released

Класс EventBase

(PECL event >= 1.2.6-beta)

Введение

Класс EventBase представляет структуру событийной базы libevent. Он содержит набор событий и может их опрашивать для определения, какие из них активны.

Каждая событийная база имеет метод или бекэнд, которые используются для определения готовых событий. Используемые методы: select , poll , epoll , kqueue , devpoll , evport и win32 .

Для настройки событийной базы или для исключения определенных бекэндов можно использовать класс EventConfig.

Внимание

НЕ разрушайте объект EventBase пока не освобождены связанные с Event ресурсы. В противном случае это приведет к непредсказуемым результатам!

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

final EventBase {
/* Константы */
const integer LOOP_ONCE = 1 ;
const integer LOOP_NONBLOCK = 2 ;
const integer NOLOCK = 1 ;
const integer STARTUP_IOCP = 4 ;
const integer NO_CACHE_TIME = 8 ;
const integer EPOLL_USE_CHANGELIST = 16 ;
/* Методы */
public __construct ([ EventConfig $cfg ] )
public void dispatch ( void )
public bool exit ([ float $timeout ] )
public void free ( void )
public int getFeatures ( void )
public string getMethod ( void )
public float getTimeOfDayCached ( void )
public bool gotExit ( void )
public bool gotStop ( void )
public bool loop ([ int $flags ] )
public bool priorityInit ( int $n_priorities )
public bool reInit ( void )
public bool stop ( void )
}

Предопределенные константы

EventBase::LOOP_ONCE

Флаг используется с методом EventBase::loop() и означает: "блокировать, пока libevent не получит активное событие, а затем выйти после того, как будут завершены функции обратного вызова для всех активных событий".

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 .

Содержание

add a note add a note

User Contributed Notes

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