Клас EventBase
(PECL event >= 1.2.6-beta)
Вступ
КлассEventBase представляє структуру подієвої бази якнайбільше. Він містить набір подій і може опитувати їх для визначення, які з них активні.
Кожна подієва база має методилибекенд, які використовуються визначення готових подій. Використовувані методи: select
poll
epoll
kqueue
devpoll
evport
иwin32
Для налаштування подійної бази або для виключення певних бекендів можна використовувати клас EventConfig
Увага
НЕ руйнуйте об'єкт EventBase доки не звільнені пов'язані з Event
ресурси. В іншому випадку це призведе до непередбачуваних результатів!
Огляд класів
final
class EventBase
{
/* Константы */
const
int
LOOP_ONCE = 1;
const
int
LOOP_NONBLOCK = 2;
const
int
NOLOCK = 1;
const
int
STARTUP_IOCP = 4;
const
int
NO_CACHE_TIME = 8;
const
int
EPOLL_USE_CHANGELIST = 16;
/* Методы */
public
__construct(
EventConfig
$cfg
= ?)
public
dispatch(): void
public
exit(
float
$timeout
= ?): bool
public
free(): void
public
getFeatures(): int
public
getMethod(): string
public
getTimeOfDayCached(): float
public
gotExit(): bool
public
gotStop(): bool
public
loop(
int
$flags
= ?): bool
public
priorityInit(
int
$n_priorities
): bool
public
reInit(): bool
public
stop(): bool
}
Обумовлені константи
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
Зміст
- EventBase::__construct - Конструктор об'єкта EventBase
- EventBase::dispatch— Відправляє події, що очікують.
- EventBase::exit— Припиняє надсилання подій
- EventBase::free— Визволяє ресурси, виділені для цієї бази подій
- EventBase::getFeatures— Повертає бітову маску підтримуваних функцій
- EventBase::getMethod— Повертає метод події, що використовується.
- EventBase::getTimeOfDayCached— Повертає поточний час базові події
- EventBase::gotExit— Перевіряє, чи було завершено цикл обробки подій.
- EventBase::gotStop— Перевіряє, чи було завершено цикл обробки подій.
- EventBase::loop— Відправлення очікуваних подій
- EventBase::priorityInit— Встановлює кількість пріоритетів на основі подій.
- EventBase::reInit - Повторна ініціалізація бази подій (після розгалуження)
- EventBase::stop— повідомляє event_base припинити відправку подій