功能建議。

flimulus

兩項功能建議。

1.FileMonitor功能 是否能在 FileMonitor.conf 增加排除監視更新的目錄 Array 的設定。
2.在 GatewayProtocol.php 上能否 新增 CMD_SEND_TO_UIDS 的功能 就是在 GatewayProtocol 上多一個UIDs的Array屬性,傳Message 給 UIDs 這個Array的用戶,現在雖然可以利用,CMD_SEND_TO_ONE 去一個一個傳,但這樣好像沒效率。

謝謝

阅读 2617
3个回答

walkor

1、按照flimulus的建议,已经在FileMonitor.conf增加排除监视选项exclude_path。代码在https://github.com/walkor/workerman。

另外:FileMonitor的作用是监控正在被使用文件是否有备更新,如果被更新便触发reload,reload会安全重启所有进程,目的是重新载入被更新的文件到内存。如果不希望某类进程被重启,例如gateway进程(重启会导致用户连接断开),可以在对应配置 conf/conf.d/gateway.conf 中加入no_reload = 1 选项,加入这个选项后当文件更新或者运行reload命令时都不会重启对应进程。

2、GatewayProtocol.php新增CMD_SEND_TO_UIDS是一个不错的建议,我的理解这是一个分组功能。要实现这个功能需要增加一些接口,例如创建分组,删除分组,给分组增加成员,删除某个分组的成员、给某个分组发消息。在实际操作过程中,这些接口会增加框架使用难度,并且容易造成分组与实际数据库中不一致的情况,目前还没想到合适的解决方法。所以这一功能我们需要再考虑下看如何实现。

最后非常感谢 flimulus 对workerman的支持。

  • 暂无评论
smith

除了 FileMonitor.php有调整,核心文件有几个小的变动
\Core\Master.php
\Core\SocketWorker.php

  • 暂无评论
walkor

2.在 GatewayProtocol.php 上能否 新增 CMD_SEND_TO_UIDS 的功能 就是在 GatewayProtocol 上多一個UIDs的Array屬性,傳Message 給 UIDs 這個Array的用戶,現在雖然可以利用,CMD_SEND_TO_ONE 去一個一個傳,但這樣好像沒效率。

已经实现,使用方法

Gateway::sendToAll($message, $uid_array);

即在原来方法Gateway::sendToAll($message);中增加了一个参数,uid数组,提供这个数组则只向这个数组的用户发送message,没提供或者数组为空则向所有用户发送message

  • 暂无评论