兩項功能建議。
1.FileMonitor功能 是否能在 FileMonitor.conf 增加排除監視更新的目錄 Array 的設定。 2.在 GatewayProtocol.php 上能否 新增 CMD_SEND_TO_UIDS 的功能 就是在 GatewayProtocol 上多一個UIDs的Array屬性,傳Message 給 UIDs 這個Array的用戶,現在雖然可以利用,CMD_SEND_TO_ONE 去一個一個傳,但這樣好像沒效率。
謝謝
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的支持。
除了 FileMonitor.php有调整,核心文件有几个小的变动 \Core\Master.php \Core\SocketWorker.php
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
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的支持。
除了 FileMonitor.php有调整,核心文件有几个小的变动
\Core\Master.php
\Core\SocketWorker.php
已经实现,使用方法
Gateway::sendToAll($message, $uid_array);
即在原来方法Gateway::sendToAll($message);中增加了一个参数,uid数组,提供这个数组则只向这个数组的用户发送message,没提供或者数组为空则向所有用户发送message