- swoole_event_set
- 状态变更
- 释放回调函数
swoole_event_set
修改事件监听的回调函数和掩码。函数原型:
bool swoole_event_set($fd, mixed $read_callback, mixed $write_callback, int $flags);
参数与swoole_event_add完全相同。如果传入$fd
在EventLoop
中不存在返回false
。
- 当·
$read_callback
不为null
时,将修改可读事件回调函数为指定的函数 - 当
$write_callback
不为null
时,将修改可写事件回调函数为指定的函数 $flags
可关闭/开启,可写(SWOOLE_EVENT_READ
)和可读(SWOOLE_EVENT_WRITE
)事件的监听
注意如果监听了SWOOLE_EVENT_READ
事件,而当前并未设置read_callback
,底层会直接返回false
,添加失败。SWOOLE_EVENT_WRITE
同理。
状态变更
使用swoole_event_add
或swoole_event_set
设置了可读事件回调,但并未监听SWOOLE_EVENT_READ
可读事件,这时底层仅保存回调函数的信息。并不会产生任何事件回调。
可以使用swoole_event_set($fd, null, null, SWOOLE_EVENT_READ | SWOOLE_EVENT_WRITE
,修改监听的事件类型,这时底层会触发可读事件。
释放回调函数
注意swoole_event_set
只能替换回调函数,但并不能释放事件回调函数。如:swoole_event_set($fd, null, null, SWOOLE_EVENT_READ | SWOOLE_EVENT_WRITE
,参数中传入的read_callback
和write_callback
为null
,表示不对swoole_event_add
设置的回调函数进行修改,而不是将事件回调函数设为null
。
只有调用swoole_event_del
清除事件监听时,底层才会释放read_callback
和write_callback
事件回调函数。