workerman事件驱动相关类和接口介绍
1 事件文件
Workerman\Events\
EventInterface.php ;事件接口
Ev.php ;EV事件机制
Event.php ;Event事件机制
Libvent.php ;Libevent事件机制
Select.php ;Select事件机制
2 事件接口(EventInterface.php)
成员变量
;读事件,写事件,信号事件,周期事件,定时事件
const EV_READ = 1;
const EV_WRITE = 2;
const EV_SIGNAL = 4;
const EV_TIMER = 8;
const EV_TIMER_ONCE = 16;
成员方法
add()注册事件
public function add($fd, $flag, $func, $args = null);
> $fd:文件描述符
> $flag:事件类型
> $func:事件处理接口
> $args:参数
del():注销事件
public function del($fd, $flag);
> $fd:文件描述符
> $flag:事件类型
clearAllTimer():移除所有定时器事件
public function clearAllTimer();
loop():开启事件循环
public function loop();
3 Ev事件机制(Ev.php)
成员变量
;所有读写事件,信号事件,定时器事件
protected $_allEvents = array();
protected $_eventSignal = array();
protected $_eventTimer = array();
;定时器id
protected static $_timerId = 1;
成员方法
add($fd, $flag, $func, $args = null)注册事件
public function add($fd, $flag, $func, $args = null)
> $fd:文件描述符
> $flag:事件类型
> $func:事件回调函数
> $args:参数
del($fd, $flag) 注销事件
public function listen() 启动端口监听
> $fd:文件描述符
> $flag:事件类型
timerCallback($event) 定时器回调接口
public function timerCallback($event)
> $event:事件参数
clearAllTimer() 移除所有定时器
public function clearAllTimer()
loop() 开启事件循环
public function loop()
4 Event事件机制(Event.php)
成员变量
;事件对象
protected $_eventBase = null;
;读写事件,信号事件,定时器事件
protected $_allEvents = array();
protected $_eventSignal = array();
protected $_eventTimer = array();
;定时器id
protected static $_timerId = 1;
成员方法
__construct():构造函数
public function __construct()
add($fd, $flag, $func, $args=array()):注册事件
public function add($fd, $flag, $func, $args=array())
del($fd, $flag):注销事件
public function del($fd, $flag)
timerCallback($fd, $what, $param):定时器回调
public function timerCallback($fd, $what, $param)
clearAllTimer():清除所有定时
public function clearAllTimer()
loop():开启事件循环
public function loop()
5 Livevent事件机制
成员变量
;事件对象
protected $_eventBase = null;
;读写事件,信号事件,定时器事件
protected $_allEvents = array();
protected $_eventSignal = array();
protected $_eventTimer = array();
成员方法
__construct():构造函数
public function __construct()
add($fd, $flag, $func, $args = array()):注册事件
public function add($fd, $flag, $func, $args = array())
del($fd, $flag:注销事件
protected static function reload() 进程重载
timerCallback($_null1, $_null2, $timer_id):定时器回调
protected function timerCallback($_null1, $_null2, $timer_id)
clearAllTimer():清除定时器事件
public function clearAllTimer()
loop():开启事件循环
public function loop()
6 Select事件机制
成员变量
;读写事件,信号事件
public $_allEvents = array();
public $_signalEvents = array();
;读描述符,写描述符
protected $_readFds = array();
protected $_writeFds = array();
;定时器调度栈,定时器监听,
protected $_scheduler = null;
protected $_task = array();
;定时器id
protected $_timerId = 1;
;延时
protected $_selectTimeout = 100000000;
;socket管道
protected $channel = array();
成员方法
__construct():构造函数
public function __construct()
add($fd, $flag, $func, $args = array()):注册事件
public function add($fd, $flag, $func, $args = array())
signalHandler($signal):信号处理接口
public function signalHandler($signal)
del($fd, $flag):注销事件
public function del($fd, $flag)
tick():定时器调度
protected function tick()
clearAllTimer():清除定时器
public function clearAllTimer()
loop():开启事件循环
public function loop()
7 事件总结
事件机制实现对socket描述的事件回调处理
- EventInterface.php 事件接口
- Ev.php libev事件接口
- Event.php Event扩展事件接口
- Libevent.php Livevent扩展事件接口
- Select.php Select事件接口
workerman事件机制所涉及到的扩展介绍
1 Ev事件处理器
1 扩展简介
内置事件处理器,无需安装
2 事件接口
final Ev{} 事件处理器核心
Ev::run()
final public static void Ev::run ([ int $flags ] )
启动事件循环,等待注册的事件监视器相应事件发生
事件发生后,自动调用事件监视器的回调函数
class EvSignal{} 信号事件监视器
public EvSignal::__construct ( int $signum , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
创建信号事件监视器并自动启动
class EvTimer{} 定时器事件监视器
public EvTimer::__construct ( double $after , double $repeat , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
创建定时器事件监视器并自动启动
class EvIo{} IO事件监视器
public EvIo::__construct ( mixed $fd , int $events , callable $callback [, mixed $data [, int $priority ]] )
创建IO事件监视器并自动启动
2 Event事件处理器
1 扩展简介
安装libevent扩展
2 事件接口
final EventBase {} 事件循环体
public bool EventBase::loop ([ int $flags ] )
启动事件循环,等待事件发生
final Event {} 事件监视器
public Event::__construct ( EventBase $base , mixed $fd , int $what , callable $cb [, mixed $arg = NULL ] )
创建各类事件监视器
public static Event Event::signal ( EventBase $base , int $signum , callable $cb [, mixed $arg ] )
创建信号事件监视器
3 Livevent事件处理器
1 扩展简介
需要安装libevent扩展
2 事件接口
event_base_new() 创建事件循环
resource event_base_new ( void )
event_new() 创建事件监视器
resource event_new ( void )
event_set() 设置事件监视器
bool event_set ( resource $event , mixed $fd , int $events , mixed $callback [, mixed $arg ] )
event_base_set() 注册事件监视器到事件循环
bool event_base_set ( resource $event , resource $event_base )
event_add() 添加事件监视器
bool event_add ( resource $event [, int $timeout = -1 ] )
event_del() 删除事件监视器
bool event_del ( resource $event )
event_base_loop() 启动事件循环
int event_base_loop ( resource $event_base [, int $flags = 0 ] )