首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
咨询一个基础问题,onReceive函数既然是异步的,为什么还要用task呢?
$serv->on('receive', function ($serv, $fd, $from_id, $data) { $data<==这里的需要不需要投递给task? }); 我现在由于的是,这里既然已经是异步的了,即使我的代码很慢,比如需要10秒才能做完。但是应该也是异步的,不会对其他用户的请求造成影响 为何还要有task再异步一次去处理? 主要是为了解决什么问题? 我现在在做一个负载较高的server,拿捏不准这里到底是一旦有data进来就直接转给task,还是就在这里处理掉。 希望指导一下。 比如发送给聊天室的255个人,直接写在onReceive里和task里主要是为了解决什么问题?
发布于9年前 · 1 次浏览 · 来自
提问
名
名人
$serv->on('receive', function ($serv, $fd, $from_id, $data) { $data<==这里的需要不需要投递给task? }); 我现在由于的是,这里既然已经是异步的了,即使我的代码很慢,比如需要10秒才能做完。但是应该也是异步的,不会对其他用户的请求造成影响 为何还要有task再异步一次去处理? 主要是为了解决什么问题? 我现在在做一个负载较高的server,拿捏不准这里到底是一旦有data进来就直接转给task,还是就在这里处理掉。 希望指导一下。 比如发送给聊天室的255个人,直接写在onReceive里和task里主要是为了解决什么问题?
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2017-07-01
窃
窃书(sunday)
onReceive是异步的,但你onReceive中的PHP代码不一定是异步的,如果存在IO等待,那么就会影响其他连接的数据执行onReceive 如果你onReceive中的处理逻辑也是纯异步的,那就不需要task 广播操作虽然是异步的不存在IO等待,但是如果循环非常大,CPU占用的时间过长也会影响其他IO事件的处理。所以也需要task
赞
0
回复
2017-07-01
音
音乐♬人生
明白了多谢。【如果存在IO等待,那么就会影响其他连接的数据执行onReceive】<==这个非常有帮助。
赞
0
回复