- 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事件回调函数。
