swoole_event_set

修改事件监听的回调函数和掩码。函数原型:

  1. bool swoole_event_set($fd, mixed $read_callback, mixed $write_callback, int $flags);

参数与swoole_event_add完全相同。如果传入$fdEventLoop中不存在返回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_addswoole_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_callbackwrite_callbacknull,表示不对swoole_event_add设置的回调函数进行修改,而不是将事件回调函数设为null

只有调用swoole_event_del清除事件监听时,底层才会释放read_callbackwrite_callback事件回调函数。