English | 简体中文 | 繁體中文
查询

EventBase::dispatch()函数—用法及示例

「 立即分派(dispatch)所有已经被注册的事件,并在当前线程中执行它们的回调函数 」


函数名:EventBase::dispatch()

适用版本:EventBase (PECL event >= 1.2.6-beta)

用法:EventBase::dispatch() 函数用于立即分派(dispatch)所有已经被注册的事件,并在当前线程中执行它们的回调函数。该函数将对所有的事件进行遍历,并按照其优先级执行回调函数。

示例:

// 创建一个 EventBase 对象
$base = new EventBase();

// 创建一个定时事件
$timerEvent = Event::timer($base, function() {
    echo "定时事件触发\n";
});

// 设置定时事件触发的时间间隔为1秒
$timerEvent->add(1);

// 注册一个信号事件,当接收到 SIGINT 信号时触发
$signalEvent = Event::signal($base, SIGINT, function() use ($base) {
    echo "接收到 SIGINT 信号\n";
    // 停止事件循环
    $base->stop();
});

// 将所有事件分派执行
$base->dispatch();

// 清除事件资源
$timerEvent->free();
$signalEvent->free();

注意:调用 EventBase::dispatch() 会阻塞当前线程,直到事件循环结束或者被调用 EventBase::stop() 函数停止。在进行事件分派前,必须通过调用 EventBase::loop() 或 EventBase::loopExit() 函数之一,开启事件循环,否则事件将不被执行。事件循环会循环执行事件,直到被显式停止。

补充纠错
上一个函数: Event::__construct()函数
下一个函数: EventBase::exit()函数
热门PHP函数
分享链接