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的更多相关文章

  1. Swoole 协程 MySQL 客户端与异步回调 MySQL 客户端的对比

    Swoole 协程 MySql 客户端与 异步回调 MySql 客户端的对比 为什么要对比这两种不同模式的客户端? 异步 MySQL 回调客户端是虽然在 Swoole 1.8.6 版本就已经发布了, ...

  2. Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步

    [TOC] 1, 环境 CentOS, MySQL, Redis, Nodejs 2, Redis简介 Redis是一个开源的K-V内存数据库,它的key可以是string/set/hash/list ...

  3. Swoole 异步mysql使用

    <?php class mysql { private $param; public $db; public function __construct() { $this->db = ne ...

  4. swoole异步任务数据报表生成

    <?php include 'vendor/autoload.php'; class server { private $serv; private $db; /** * [__construc ...

  5. swoole异步群发模板消息

    1.用的是TP5.1的框架,swoole分成一个客户端发送接收消息,一个服务器负责处理信息 服务端代码,服务器要先安装swoole拓展,用 php server.php 启动进程监听 <?php ...

  6. 用swoole简单实现MySQL连接池

    MySQL连接池 在传统的网站开发中,比如LNMP模式,由Nginx的master进程接收请求然后分给多个worker进程,每个worker进程再链接php-fpm的master进程,php-fpm再 ...

  7. scrapy 异步存储mysql

    1.在setting中设置MySQL连接信息 HOST='101.201.70.139'MYSQL_DBNAME='anttest'MYSQL_PASSWORD='Myjr678!@#'MYSQL_U ...

  8. swoole异步redis安装前置条件和流程

    ---恢复内容开始--- 1.redis服务 确认redis在服务器中已经安装了 2.hiredis库 第二步安装hiredis 下载位置 2.1获取 安装包https://github.com/re ...

  9. scrapy实战8关于数据异步写入mysql:

    环境:python3 爬取网址:腾讯社招(http://hr.tencent.com/position.php?keywords=&tid=0&start=0#a)总共2202条数据 ...

随机推荐

  1. Flutter 修改SDK 路径出现的问题

    更换Flutter SDK 路径之后出现的问题. 解决方法:flutter packages upgrade. 替换: 替换这两个文件里的路径. 同时修改电脑配置文件里的路径: open -a Tex ...

  2. 了解ajax基本爬取方式

    '''爬去豆瓣电影数据了解ajax的基本爬去方式 ''' from urllib import requestimport jsonimport ssl url = "https://mov ...

  3. 引入flask_cache时出现ModuleNotFoundError: No module named 'flask.ext'

    环境: centos 7.3 python 3.6 flask 1.0.2 flask-cache 0.13.1 引入flask_cache后运行时,出现以下错误 Traceback (most re ...

  4. 如何在Linux服务器上部署Mysql

    一.安装mysql 1.通过文件上传工具,将mysql安装包上传到linux服务器上 2.卸载mariadb包,由于系统中存在mariadb包会导致mysql安装时报错mariadb-libs被mys ...

  5. 基于 WebGL 的 3D 动态柱状图表

    发现现在工业SCADA上或者电信网管方面用图表的特别多,虽然绝大部分人在图表制作方面用的是echarts,他确实好用,但是有些时候我们不能调用别的插件,这个时候就得自己写这些美丽的图表了,然而图表轻易 ...

  6. TensorFlow2.0(7):激活函数

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  7. nginx::环境搭建

    ubuntu18.04 环境 1.需要gcc 环境,如果没有gcc环境,则需要安装 apt install gcc .安装pcre依赖库 PCRE(Perl Compatible Regular Ex ...

  8. Logstash 入门

    一.简介 Logstash 是开源的服务器端数据处理管道,支持从不同来源采集数据,装换数据,并将数据发送到不同的存储库中. Logstash 项目诞生于 2009 年 8 月 2 日.其作者是世界著名 ...

  9. 在已有 Windows10 系统的基础上,安装 Ubuntu17.10 系统(新版 BIOS)

    1.第一步,下载Ubuntu系统镜像 2.第二步,制作启动U盘,使用UltralSO,步骤:打开文件——选择iso文件——启动——写入硬盘映像——选择U盘——写入 3.第三步,分区,在Windows徽 ...

  10. .NET Core 3.0 构建和部署

    Default Executables 默认可执行文件 在 dotnet build 或 dotnet publish 期间,将创建一个与你使用的 SDK 的环境和平台相匹配的可执行文件. 和其他本机 ...