之所以要介绍Event库,而不是 libevent 。是因为libevent目前只支持php7以下.考虑到php7也发布。因此,这里采用Event库进行介绍。
Event库是个有效地调度I/O、时间和基于信号的事件的扩展,不支持window平台。跟libevent差不多。只不过,Event库是采用面向对象,而libevent则是 面向过程 .
1、主要类
EventBase和Event
1.1、两者的关系如下图所示
1.2、EventBase
检测Event是否为活跃状态
- free方法
释放EventBase
- loop方法
等待直到Event为活跃状态,并执行它们的 回调函数
1.3、Event
- 类常量
从表格中的数值,可以用6个二进制位来代表
- 构造方法
__construct(EventBase $base , mixed $fd , int $what , callable $cb [, mixed $arg = NULL ])
其中:
$base 为EventBase 实例化 对象
$fd为stream资源、 socket 资源、信号值、为定时器时取-1
$what为Event类常量值
$cb为回调方法
$arg为执行回调方法传入的图像
- add方法
加入检测
- signal方法
静态方法 ,设置信号检测
- timer方法
静态方法,设置定时器
1.4、回调函数分类
- 通用 callback ([ mixed $fd = NULL [, int $what [, mixed $arg = NULL ]]] )
- Event::timer静态方法 callback ([ mixed $arg = NULL ] )
- Event::signal callback ([ int $signum [, mixed $arg = NULL ]] )