手机版

Swoole实现异步投递工作任务案例详解

时间:2021-08-26 来源:互联网 编辑:宝哥软件园 浏览:

本文实例讲述了框架实现异步投递工作任务案例。分享给大家供大家参考,具体如下:

【使用场景】

斯威尔的工作模块可以用来做一些异步的慢速任务、耗时场景。如线客服中发广播,发送邮件等,把这些任务丢给工作进程之后工人进程可以继续处理新的数据请求,任务完成后会异步通知工人进程告诉它此任务已经完成。此外利用工作还可以实现服务器端编程语言(专业超文本预处理器的缩写)的数据库连接池,异步队列等。

【使用须知】

必须设置工作进程数:任务_工作人员_编号

投递一个异步任务到任务工作者池中:服务器任务

必须注册任务、完成2个事件回调函数。

【示例】

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

ws_server.php:

?PHP class Ws { public $ Ws=nullpublic function _ _ construct(){ $ this-Ws=new swoole _ web socket _ server(' 0。0 .0 .0 ',9501);$this-ws-set([ 'worker_num'=2,//worker进程数task_worker_num'=2,//task进程数]);$this-ws-on('open ',[$this,' onOpen ']);$this-ws-on('message ',[$this,' onMessage ']);$this-ws-on('task ',[$this,' onTask ']);$this-ws-on('finish ',[$this,' onFinish ']);$this-ws-on('close ',[$this,' onClose ']);$ this-ws-start();} //建立连接回调公共函数onOpen($ws,$ request){ echo"{ request-FD }建立了连接;} //接受消息回调公共函数onMessage($ws,$frame) { //worker进程异步投递任务到任务工作者进程中$data=[ 'fd'=$frame-fd,];$ ws-task($ data);//服务器返回"回声"服务器发送消息:666';} //完成异步任务回调公共函数onTask($ server,$task_id,$worker_id,$ data){ var _ dump($ data);//模拟慢速任务睡眠(5);//返回字符串给工人进程——触发完成返回"成功";} //完成任务投递回调公共函数onFinish($ server,$task_id,$data) { //task_worker进程将任务处理结果发送给工人进程"回声"完成任务{$task_id}投递处理结果:{ $ data } ';} //关闭连接回调公共函数onClose($ws,$ FD){ echo"{ $ FD }关闭了连接;} } $ obj=new Ws();前端页面射流研究…监听:

!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN ' ' http://www .w3。L1-过渡时期。DTD ' html xmlns=' http://www .w3。org/1999/XHTML ' head title WebSocket/title/head body/body脚本类型=' text/JavaScript ' var web socket=new WebSocket '(ws ://127。0 .0web套接字。onOpen=函数(evt){ on open(evt)};web套接字。onClose=function(evt){ onClose(evt)};web套接字。on message=function(evt){ onMessage(evt)};web套接字。onError=函数(evt){ onError(evt)};函数' onOpen(evt) { console.log('已连接到WebSocket服务器。');//*发送消息到求转发到服务器web套接字。发送(' 666 ');事件函数(evt){控制台。日志(“已断开”);}函数onMessage(evt) { console.log('从服务器:检索到的数据evt。数据);}函数OnError(evt){控制台。日志('出现错误d : ' evt。数据);}/脚本/html开启WebSocket服务:

php ws_server.php前后刷新了两次页面,WebSocket服务器监听结果:

(服务器会先返回消息给客户端,然后再执行投递任务)

更多关于服务器端编程语言(专业超文本预处理器的缩写)相关内容感兴趣的读者可查看本站专题: 《PHP扩展开发教程》 、 《php面向对象程序设计入门教程》 、 《PHP数学运算技巧总结》 、 《PHP数组(Array)操作技巧大全》 、 《PHP数据结构与算法教程》 、 《php程序设计算法总结》 、 《php正则表达式用法总结》 及《php常见数据库操作技巧汇总》

希望本文所述对大家服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。

版权声明:Swoole实现异步投递工作任务案例详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。