首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
异步任务 (Task)和go协程分别的应用场景是什么呢?
### 问题描述 比如我现在需要给用户发送注册邮件,我直接使用 ```php go(function(){ //发邮件 }) ``` 这样的协程方式非常简单,也相当于是异步执行,也不影响当前的请求响应速度 但是swoole还有个 task 功能 [https://wiki.swoole.com/#/start/start_task](https://wiki.swoole.com/#/start/start_task) 相比之下有什么优势呢? 我是不是在大多数需要异步执行的情况都使用go()去操作就可以了呢?
发布于4年前 · 29 次浏览 · 来自
提问
Reegle
### 问题描述 比如我现在需要给用户发送注册邮件,我直接使用 ```php go(function(){ //发邮件 }) ``` 这样的协程方式非常简单,也相当于是异步执行,也不影响当前的请求响应速度 但是swoole还有个 task 功能 [https://wiki.swoole.com/#/start/start_task](https://wiki.swoole.com/#/start/start_task) 相比之下有什么优势呢? 我是不是在大多数需要异步执行的情况都使用go()去操作就可以了呢?
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2022-08-18
Rango
有些`PHP`的函数和类是无法协程化的,比如`mongodb`、`oracle`、`sql server`等数据库。这时候将同步阻塞的代码放到`Task`进程中去执行,这样`Worker`进程就不会阻塞。
赞
0
回复
2022-08-21
Reegle
回复
Rango
明白了,感谢大佬解答
赞
0
回复
2022-08-18
Rango
还有一种情况就是大量消耗 `CPU` 资源的操作,也会导致协程挂起比较长的时间,这时候也可以投递到 `Task` 进程中执行。
赞
0
回复