首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
dispatch_mode=5数据包分发策略,$serv->bind()应该写在哪个回调函数中呢?
文档上介绍这种方式是按用户自定义uid方式分配worker进程,问题是$serv->bind($fd, $uid)应该写在哪个回调函数中呢? 各进程内执行的回调函数 http://wiki.swoole.com/wiki/page/67.html 1. 疑惑:如果写在Worker进程内的onWorkerStart、onConnect、onReceive等回调函数里,这时worker_id早已分配,在Worker进程内分配Worker,是不是自相矛盾了? 2. 我的$uid需要从客户端的参数传递过来,这样,我的业务逻辑代码只能写在onReceive回调中才能接受到$uid参数 3. .“fd是不稳定的,一个客户端断开后重新连接,fd会发生改变,使用bind之后就可以按照用户定义的ID进行分配。即使断线重连,相同uid的TCP连接数据会被分配相同的Worker进程” 上面这句话不太理解,既然每次断开重连$fd已发生了变化, 再来bind($fd) 不是已经没有意义了吗? 期待回复。
发布于9年前 · 1 次浏览 · 来自
提问
林
林晓易
文档上介绍这种方式是按用户自定义uid方式分配worker进程,问题是$serv->bind($fd, $uid)应该写在哪个回调函数中呢? 各进程内执行的回调函数 http://wiki.swoole.com/wiki/page/67.html 1. 疑惑:如果写在Worker进程内的onWorkerStart、onConnect、onReceive等回调函数里,这时worker_id早已分配,在Worker进程内分配Worker,是不是自相矛盾了? 2. 我的$uid需要从客户端的参数传递过来,这样,我的业务逻辑代码只能写在onReceive回调中才能接受到$uid参数 3. .“fd是不稳定的,一个客户端断开后重新连接,fd会发生改变,使用bind之后就可以按照用户定义的ID进行分配。即使断线重连,相同uid的TCP连接数据会被分配相同的Worker进程” 上面这句话不太理解,既然每次断开重连$fd已发生了变化, 再来bind($fd) 不是已经没有意义了吗? 期待回复。
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2017-05-17
小
小刘很忙
在`onConnect`和`onReceive`中都可以使用bind绑定到特定的Worker进程。
赞
0
回复
2017-05-18
x
xq
在Swoole\Protocol\CometServer 应用中, 在onReceive回调中使用$serv->bind($fd, crc32($uidstr)) 进行绑定,下次请求时,在onReceive中打印$this->swoole_server->worker_id, 依然是分配到了不同的worker_id,这个是不是有问题啊?不起作用的。
赞
0
回复
2017-07-12
旗
旗鱼
同问,这个bind能否举例说明下, 好像没有什么意义
赞
0
回复