tp5使用workerman实现异步任务

优采云 发布时间: 2020-08-12 05:00

  问题描述:

  采集数据时过程太慢,导致难以继续进行其他任务,,避免主业务被长时间阻塞,故而将其递交给异步任务,当任务完成通知客户端即可

  流程

  前端业务:

  由于本系统采用iframe结构,为防止点击其他页面业务中断,所以业务在父页面执行,

  1.用户在子页面点击采集按钮调用父级方式

  

function to_collect(ids) {

window.parent.startCollect(ids);

}

  2.父级页面进行socket链接,当收到服务器处理完任务消息时关掉socket并通知用户结果

  

function startCollect(ids)

{

var wsServer = 'ws://127.0.0.1:5432';

var websocket = new WebSocket(wsServer);

var inter_val = 0;

websocket.onopen = function (evt) {

console.log("Connected to WebSocket server.");

var data = {ids:ids};

data = JSON.stringify(data);

websocket.send(data);

//设置心跳,避免服务器断开

inter_val = setInterval(function () {

websocket.send('hello');

}, 50000)

};

websocket.onclose = function (evt) {

console.log("Disconnected");

};

websocket.onmessage = function (evt) {

console.log('Retrieved data from server: ' + evt.data);

if (isJson(evt.data)) {

var res = JSON.parse(evt.data);

if(res.code == 0){

alert("采集条数:"+res.msg)

websocket.close();

clearInterval(inter_val);//关闭定时器

}

}

};

websocket.onerror = function (evt, e) {

console.log('Error occured: ' + evt.data);

};

}

/**

* 判断是否json

* @param $string

* @returns {boolean}

*/

function isJson($string)

{

try {

if(typeof JSON.parse($string) == 'object')

return true;

return false;

} catch (e) {

console.log(e);

return false;

}

}

  服务端

  1. 收到后端发来的数据,调用model进行业务处理,然后通知客户端

<p>

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线