PHP Conference Japan 2024

Event 类

(PECL event >= 1.2.6-beta)

简介

Event 类表示文件描述符准备好读取或写入的事件触发;文件描述符准备好读取或写入(仅限边沿触发 I/O);超时过期;信号发生;用户触发的事件。

每个事件都与 EventBase 相关联。但是,事件永远不会触发,除非它被 添加(通过 Event::add())。添加的事件保持 挂起 状态,直到注册的事件发生,从而将其转换为 活动 状态。为了处理事件,用户可以注册一个回调函数,该函数在事件变为活动时被调用。如果事件被配置为 持久 的,则它将保持挂起状态。如果它不是持久性的,则在它的回调函数运行时,它将停止挂起。 Event::del() 方法 删除 事件,从而使其不处于挂起状态。通过 Event::add() 方法,它可以再次被添加。

类摘要

final class Event {
/* 常量 */
const int ET = 32;
const int PERSIST = 16;
const int READ = 2;
const int WRITE = 4;
const int SIGNAL = 8;
const int TIMEOUT = 1;
/* 属性 */
public readonly bool $pending;
/* 方法 */
public add( float $timeout = ?): bool
public __construct(
     EventBase $base,
     mixed $fd,
     int $what,
     callable $cb,
     mixed $arg = NULL
)
public del(): bool
public free(): void
public static getSupportedMethods(): array
public pending( int $flags ): bool
public set(
     EventBase $base,
     mixed $fd,
     int $what = ?,
     callable $cb = ?,
     mixed $arg = ?
): bool
public setPriority( int $priority ): bool
public setTimer( EventBase $base , callable $cb , mixed $arg = ?): bool
public static signal(
     EventBase $base,
     int $signum,
     callable $cb,
     mixed $arg = ?
): Event
public static timer( EventBase $base , callable $cb , mixed $arg = ?): Event
}

属性

pending

事件是否处于挂起状态。参见 关于事件持久性

预定义常量

Event::ET

指示事件应为边沿触发,如果底层事件基础后端支持边沿触发事件。这会影响 Event::READEvent::WRITE 的语义。

Event::PERSIST

指示事件是持久的。参见 关于事件持久性

Event::READ

此标志指示当提供的文件描述符(通常是流资源或套接字)准备好读取时变为活动的事件。

Event::WRITE

此标志指示当提供的文件描述符(通常是流资源或套接字)准备好读取时变为活动的事件。

Event::SIGNAL

用于实现信号检测。请参见下面的“构造信号事件”。

Event::TIMEOUT

此标志指示在超时到期后变为活动的事件。

Event::TIMEOUT 标志在构造事件时会被忽略:可以在 添加 事件时设置超时,也可以不设置。当发生超时时,它会在回调函数的 $what 参数中设置。

目录

添加注释

用户贡献笔记

此页面没有用户贡献的笔记。
To Top