首页 > 数据库技术 > 详细

php swoole异步处理mysql

时间:2019-11-14 14:40:46      阅读:90      评论:0      收藏:0      [点我收藏+]

php swoole异步处理mysql

<pre>
//创建websocket服务器对象,监听0.0.0.0:9509端口
//异步测试
$ws = new swoole_websocket_server("0.0.0.0", 9600);

$ws->set(array(
‘worker_num‘ => 1,
‘max_conn‘ => 65535,
/*‘daemonize‘ => true,*/
‘backlog‘ => 128,
‘task_worker_num‘ => 1,
));

//监听WebSocket连接打开事件
$ws->on(‘open‘, function ($ws, $request) {

});

/* $tag 1 初始化玩家信息 */
//监听WebSocket消息事件
$ws->on(‘message‘, function ($ws, $frame) {

});

 

//定时器要写在WorkerStart这个里面哦
$ws->on(‘WorkerStart‘, function ($serv, $worker_id) {
//投递异步任务
$data=array(‘wef‘=>‘wefe‘);

$task_id = $serv->task($data);
echo "Dispath AsyncTask: id=$task_id\n";

/*执行其他操作*/
echo‘lalalalalalal‘;
});

/*通用的执行*/
function commonexecute($sql, $zhanwei = ‘‘, $isdebug = 0)
{
try {
$stmt = \Db::getStmt($sql);
if (empty($zhanwei)) {
$isok=$stmt->execute();
} else {
$isok=$stmt->execute($zhanwei);
}
if ($isdebug) {
getrepairsql($sql, $zhanwei);
}
} catch (\PDOException $e) {
$errorstr1=‘mysql语句错误1:‘.$e->getMessage().PHP_EOL;
$errorstr2=‘mysql语句错误2:‘.$sql.PHP_EOL;
echo $errorstr1;
echo‘</br>‘;
echo $errorstr2;
file_put_contents(__DIR__.‘/error.log‘, date("Y-m-d H:i:s"). " " . $errorstr1.PHP_EOL, FILE_APPEND | LOCK_EX);
file_put_contents(__DIR__.‘/error.log‘, date("Y-m-d H:i:s"). " " . $errorstr2.PHP_EOL, FILE_APPEND | LOCK_EX);
exit();
}
return $isok;
}
//处理异步任务
$ws->on(‘task‘, function ($serv, $task_id, $from_id, $data) {

echo "New AsyncTask[id=$task_id]".PHP_EOL;
var_dump($data);
$sql=‘select SLEEP(6)‘;
$isok=commonexecute($sql);
//返回任务执行的结果
$serv->finish("$data -> OK");

});
//处理异步任务的结果
$ws->on(‘finish‘, function ($serv, $task_id, $data) {
echo "AsyncTask[$task_id] Finish: $data".PHP_EOL;
});


//监听WebSocket连接关闭事件
$ws->on(‘close‘, function ($ws, $fd) {
});


$ws->start();
</pre>

可以看出了执行sleep sql语句时候并有堵塞线程

 

php swoole异步处理mysql

原文:https://www.cnblogs.com/newmiracle/p/11856389.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!