PHP
事件 | Event

EventBase (class)

The EventBase class

Introduction

(PECL event >= 1.2.6-beta)

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

每个事件库都有一个方法,或者一个用来确定哪些事件已准备好的后端。公认的方法是:selectpollepollkqueuedevpollevportwin32

要配置要使用的事件库,或者避免使用特定的后端EventConfig类。

警告

千万不要破坏EventBase只要相关的资源对象的事件对象不被释放。否则,会导致不可预知的结果!

课程简介

final EventBase {

/* Constants */

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 ;

/* Methods */

public __construct ([ EventConfig $cfg ] )

public void dispatch ( void )

public bool exit ([ double $timeout ] )

public void free ( void )

public int getFeatures ( void )

public string getMethod ( void )

public double 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 bug:如果使用此标志(如果有由dup()或其变体克隆的任何fds),则不安全。这样做会产生奇怪而难以诊断的错误。

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

如果使用除了epoll之外的后端,这个标志不起作用。

目录

  • EventBase::__construct — Constructs EventBase object

  • EventBase::dispatch — Dispatch pending events

  • EventBase::exit — Stop dispatching events

  • EventBase::getFeatures — Returns bitmask of features supported

  • EventBase::getMethod — Returns event method in use

  • EventBase::getTimeOfDayCached — Returns the current event base time

  • EventBase::gotExit — Checks if the event loop was told to exit

  • EventBase::gotStop — Checks if the event loop was told to exit

  • EventBase::loop — Dispatch pending events

  • EventBase::priorityInit — Sets number of priorities per event base

  • EventBase::reInit — Re-initialize event base(after a fork).

  • EventBase::stop — Tells event_base to stop dispatching events

← Event::timer

EventBase::__construct →