|基于Swoole的异步Task任务

文章图片
本节将从如下两方面讲述Swoole Task任务:
- 如何在 Swoole 中实现异步 Task 任务?
- Swoole 的异步 Task 任务的使用场景有哪些?
在服务端程序中如果要执行一些耗时的操作(比如Web服务器中发送邮件、发送短信等) , 如果直接去顺序执行这些操作 , 程序就会阻塞当前进程 , 导致服务器响应变慢 。 通常的做法是使用异步脚本或者消息队列来完成这些操作 。 通过 Swoole 如何实现异步任务处理呢?
Swoole中提供异步处理的功能 , 可以投递一个异步任务到TaskWorker进程池中执行 , 不影响当前请求的处理速度 。 新建文件 , 命名为task_server.php , 代码如下:
【|基于Swoole的异步Task任务】在命令行执行如下命令即可运行程序:php task_server.php上面的代码创建了一个TCP服务 , 同时设置了4个taskWorker进程 , 同时实现了 onTask 和 onFinish 2个事件回调函数 。 当客户端与服务端建立连接后 , 客户端发送消息会触发上面代码中的 receive 事件 。 在 receive 事件中会调用 $serv->task() 函数 , 执行 task 任务 , 程序会立即返回 , 继续向下执行代码 。 OnTask 回调函数在 TaskWorker 进程中被异步执行 。 执行完成后调用 $serv->finish() 函数返回结果(finish回调函数是可选事件 , 也可以不设置) 。 Swoole的 Task 任务适合处理一些耗时的操作 , 如发送邮件、发送短信、推送消息等 。 例如在上面代码中 , onReceive 回调事件被触发后 , 就可以执行 $serv->task() 来执行一个异步任务 。 注意事项:如果要投递任务 , 需要在配置文件中 task_worker_num 必须要设置 , 否则会报错 。
推荐阅读
- 腾讯控股的保险代理平台“微保”被深圳银保监局处罚
- 成龙的功夫是杂技,洪金宝胖的不灵活,周比利评价两人实战能力
- 凉茶|凉茶最大的问题不是添加西药,而是冒充饮料
- 台风|里弗斯谈独行侠:不会忽视有联盟前五球员的球队
- 高考遇洪水,交警铁骑送 景德镇考生的"国宾待遇"
- 未来的大学生活“长啥样”? 来看学长为你写下的万字指南
- 不起眼的朗姐|和老人出去旅游,为什么会觉得心累?网友:只要老妈身体允许以后还要带她去,哈哈哈哈
- 粤游记|旅游就该诗酒趁年华,带你一起到东京,我们玩点不一样的!
- 三分钟游世界|云南新走红一座公园,门票高达100元,但去过的游客都说好
- 识别“95”号段中的“李鬼” 这些小技巧要掌握!
