在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
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~