PHP Conference Japan 2024

EventBase 类

(PECL event >= 1.2.6-beta)

简介

EventBase 类表示 libevent 的事件基础结构。它包含一组事件,并且可以轮询以确定哪些事件处于活动状态。

每个事件基础都有一个 方法 或一个 后端,它用于确定哪些事件已准备就绪。识别的方法包括:selectpollepollkqueuedevpollevportwin32

要配置要使用的事件基础或避免使用特定后端,可以使用 EventConfig 类。

警告

只要关联的 Event 对象的资源未释放,就不要销毁 EventBase 对象。否则,会导致不可预测的结果!

类概要

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;
/* 方法 */
public __construct( EventConfig $cfg = ?)
public dispatch(): void
public exit( float $timeout = ?): bool
public free(): void
public getFeatures(): int
public getMethod(): string
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 错误:如果任何 fd 通过 dup() 或其变体克隆,则使用此标志是不安全的。这样做会导致奇怪且难以诊断的错误。

此标志也可以通过设置 EVENT_EPOLL_USE_CHANGELIST 环境变量来激活。

如果最终使用除 epoll 之外的后端,则此标志无效。

目录

添加注释

用户贡献注释

此页面没有用户贡献的注释。
To Top