php原生异步mysql_php swoole异步处理mysql

php swoole异步处理mysql

 
 

//创建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'';

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();

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值