Swoole异步task

2022-10-11 21:58:27 130 0
魁首哥

在Server程序中如果需要执行很耗时的操作,比如一个聊天服务器发送广播,Web服务器中发送邮件、短信。如果直接去执行这些函数就会阻塞当前进程,导致服务器响应变慢。

Swoole提供了异步任务处理的功能,可以投递一个异步任务到TaskWorker进程池中执行,不影响当前请求的处理速度。

实现基于第一个WS服务器,只需要增加onTask和onFinish 2个事件回调函数即可,onFinish事件接收onTask事件执行完毕后的返回值。另外需要设置task进程数量,可以根据任务的耗时和任务量配置适量的task进程。

使用须知

必须设置Task进程数: task_worker_num

投递一个异步任务到task_worker池中:Server->task

必须注册onTask、onFinish2个事件回调函数。

示例

以创建一个WebSocket服务异步投递任务为例:

ws_server.php:

前端页面监听:

前后刷新了两次页面,WebSocket服务器监听结果(服务器会先返回消息给客户端,然后再执行投递任务):

收藏
分享
海报
0 条评论
130
上一篇:基于session和Token的会话管理模式,什么是JWT?说说它的实践方式 下一篇:8道PHP工程师常用面试题

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码