Channel

基于 Swoole 提供的 Swoole\Channel,直接在配置文件中设置,就可以在worker进程中使用,数据互通。

Channel可以作为队列使用。

配置方式

在配置文件中加入以下节

  1. 'channels' => [
  2. // 定义名为name1的,通道占用的内存的尺寸为64kb
  3. 'name1' => [64 * 1024],
  4. ],

使用方式

  1. use \Imi\Util\ChannelManager;
  2. // 获取 Swoole\Channel对象
  3. $channel = ChannelManager::getInstance('name1');
  4. // 向队列中加入一个成员
  5. ChannelManager::push('name1', 'test');
  6. // 还支持数组,等一切可以被序列化的值
  7. ChannelManager::push('name1', [1, 2, 3]);
  8. // 弹出一个成员,如果没有值则为false
  9. $result = ChannelManager::pop('name1');
  10. // 获取通道的状态
  11. $result = ChannelManager::stats('name');
  12. /*
  13. $result 格式如下:
  14. [
  15. // 通道中的元素数量
  16. 'queue_num' => 1,
  17. // 通道当前占用的内存字节数
  18. 'queue_bytes' => 1024,
  19. ]
  20. */