swoole_event_set

最后更新于:2022-04-02 06:37:55

# swoole\_event\_set [TOC] 修改事件监听的回调函数和掩码。函数原型: ~~~ bool swoole_event_set($fd, mixed $read_callback, mixed $write_callback, int $flags); ~~~ 参数与[swoole\_event\_add](swoole\_event\_add.md)完全相同。如果传入`$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`事件回调函数。
';